Розница 2.0 колонка остатки в форму документа

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. Rasten 24 18.11.13 13:15 Сейчас в теме
Добрый день, прощу помощи по данной теме, своих знаний не хватает.
Розница, редакция 2.0 (2.0.5.7)
требуется добавить колонку остатки в документе ОтчетОРозничныхПродажах и РеализацияТоваров.
Напишите пожалуйста подробный алгоритм действий, или примеры, буду очень признателен.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
3. CoderAnton 18.11.13 19:19 Сейчас в теме
По вашему вопросу, для начала надо открыть для редактирования текст формы документа о продажах. Делается это в конфигураторе Конфигурация/Поддержка/НастройкаПоддержки. Будьте внимательны, если вы получаете обновления конфигурации то откройте для редактирования только нужные части конфигурации с сохранением поддержки если это необходимо вам.

Далее нужно в самом документе в табличной части товары добавить реквизит и назвать остаток. Это добавляется в (объект/табличная чать/добавить нужный реквизит).

После этого этот реквизит нужно перетащить на форму в табличную часть и расположить в нужном месте.

Собственно по процедурам, нужно создать ОбщийМодуль с галочками сервер и вызов сервера чтоб там размещать свои функции и процедуры, в это модуле напишите функцию которая будет получать остатки из регистра ТоварыНаСкладах.

Например такой код

Функция ПолучитьОстаток(ВыбДата, Номенклатура, Характеристика, Склад) Экспорт
	//получим остаток
	Фильтр = Новый Структура;
	Фильтр.Вставить("Номенклатура", Номенклатура);
	Фильтр.Вставить("Характеристика", Характеристика);
	//Фильтр.Вставить("Склад", Склад);
	Возврат РегистрыНакопления.ТоварыНаСкладах.Остатки(ВыбДата, Фильтр, "Номенклатура, Характеристика", "Количество").Итог("Количество");
КонецФункции
Показать


либо написать простой запрос, сравнить по производительности что будет быстрее получать остаток и оставить более быстрый вариант.

Далее просто в документе в процедуре ТоварыНоменклатураПриИзменении() вписываете вызов этой функции для получения остатков прописываете в самом конце процедуры чтоб потом долго не сикать
	
//получим остаток
	ТекущаяСтрока.Остаток = ДополнительныеФункции.ПолучитьОстаток(Объект.Дата, ТекущаяСтрока.Номенклатура, ТекущаяСтрока.Характеристика, Объект.Магазин);	


Соответственно нужно еще прописать в обработке подбора получение остатков по выбранным позициям, делается аналогично, чтоб долго не мучатся и производительность не важна тогда после подбора можно просто перебрать строки и в каждую получить остаток, но это требует много ресурсов и времени. Оптимальнее всего получать остатки в процессе подбора. Ну и еще если этот документ создается каким-то другим автоматом, то необходимо в том участке кода тоже добавить получение количества.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Lenten 26 18.11.13 13:33 Сейчас в теме
Очень рекомендовал бы использовать для этого отчет, а не табличную часть документа. Будет очень сильно лагать у всех, т.к. это документы ходовые.

Либо заполнять колонку не при открытии, а по дополнительной кнопке.

По поводу подробного алгоритма. Если сосем туго с навыками, лучше отбашлять профессионалам, меньшей кровью отделаетесь.
3. CoderAnton 18.11.13 19:19 Сейчас в теме
По вашему вопросу, для начала надо открыть для редактирования текст формы документа о продажах. Делается это в конфигураторе Конфигурация/Поддержка/НастройкаПоддержки. Будьте внимательны, если вы получаете обновления конфигурации то откройте для редактирования только нужные части конфигурации с сохранением поддержки если это необходимо вам.

Далее нужно в самом документе в табличной части товары добавить реквизит и назвать остаток. Это добавляется в (объект/табличная чать/добавить нужный реквизит).

После этого этот реквизит нужно перетащить на форму в табличную часть и расположить в нужном месте.

Собственно по процедурам, нужно создать ОбщийМодуль с галочками сервер и вызов сервера чтоб там размещать свои функции и процедуры, в это модуле напишите функцию которая будет получать остатки из регистра ТоварыНаСкладах.

Например такой код

Функция ПолучитьОстаток(ВыбДата, Номенклатура, Характеристика, Склад) Экспорт
	//получим остаток
	Фильтр = Новый Структура;
	Фильтр.Вставить("Номенклатура", Номенклатура);
	Фильтр.Вставить("Характеристика", Характеристика);
	//Фильтр.Вставить("Склад", Склад);
	Возврат РегистрыНакопления.ТоварыНаСкладах.Остатки(ВыбДата, Фильтр, "Номенклатура, Характеристика", "Количество").Итог("Количество");
КонецФункции
Показать


либо написать простой запрос, сравнить по производительности что будет быстрее получать остаток и оставить более быстрый вариант.

Далее просто в документе в процедуре ТоварыНоменклатураПриИзменении() вписываете вызов этой функции для получения остатков прописываете в самом конце процедуры чтоб потом долго не сикать
	
//получим остаток
	ТекущаяСтрока.Остаток = ДополнительныеФункции.ПолучитьОстаток(Объект.Дата, ТекущаяСтрока.Номенклатура, ТекущаяСтрока.Характеристика, Объект.Магазин);	


Соответственно нужно еще прописать в обработке подбора получение остатков по выбранным позициям, делается аналогично, чтоб долго не мучатся и производительность не важна тогда после подбора можно просто перебрать строки и в каждую получить остаток, но это требует много ресурсов и времени. Оптимальнее всего получать остатки в процессе подбора. Ну и еще если этот документ создается каким-то другим автоматом, то необходимо в том участке кода тоже добавить получение количества.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот