Добавление колонки "остаток" в заказ поставщику
Другую тему с таким же названием видел, но решения для себя не нашел.
Ребят, помогите пожалуйста:
Как переписать данный код для выполнения по команде (кнопка в форме) вместо ПриВыводеСтроки.
Вариант с "Видимость" я уже реализовал, но результат мало устраивает. Опыта, к сожалению, мало, задачу самостоятельно решить не могу.
На просторах интернета найден код, которых большую часть задачи для меня решает, но зависания при каждом действии (скроллинг, выбор позиции, добавление позиции) - просто убивает.
УТ10.3 Заказ поставщику:
Ребят, помогите пожалуйста:
Как переписать данный код для выполнения по команде (кнопка в форме) вместо ПриВыводеСтроки.
Вариант с "Видимость" я уже реализовал, но результат мало устраивает. Опыта, к сожалению, мало, задачу самостоятельно решить не могу.
На просторах интернета найден код, которых большую часть задачи для меня решает, но зависания при каждом действии (скроллинг, выбор позиции, добавление позиции) - просто убивает.
УТ10.3 Заказ поставщику:
//RS:
Функция ОстатокНаСкладе(Номенклатура) Экспорт
ВидСклада = Склад.ВидСклада;
Если ВидСклада = Перечисления.ВидыСкладов.НТТ Тогда
Текст = "ВЫБРАТЬ
| ТоварыВНТТОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыВНТТ.Остатки(&Дата, ) КАК ТоварыВНТТОстатки
|ГДЕ
| ТоварыВНТТОстатки.Склад = &Склад
| И ТоварыВНТТОстатки.Номенклатура = &Номенклатура";
ИначеЕсли ВидСклада = Перечисления.ВидыСкладов.Оптовый Тогда
Текст = "ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, ) КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.Склад = &Склад
| И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура";
ИначеЕсли ВидСклада = Перечисления.ВидыСкладов.Розничный Тогда
Текст = "ВЫБРАТЬ
| ТоварыВРозницеОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыВРознице.Остатки(&Дата, ) КАК ТоварыВРозницеОстатки
|ГДЕ
| ТоварыВРозницеОстатки.Склад = &Склад
| И ТоварыВРозницеОстатки.Номенклатура = &Номенклатура";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = Текст;
Запрос.УстановитьПараметр("Дата",Дата);
Запрос.УстановитьПараметр("Склад",Склад);
Запрос.УстановитьПараметр("Номенклатура",Номенклатура);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Количество = ?(Выборка.Следующий(),Выборка.Количество,0);
Возврат Количество;
КонецФункции
Функция ОстатокОрганизации(Номенклатура) Экспорт
Текст = "ВЫБРАТЬ
| ТоварыОрганизацийОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата, ) КАК ТоварыОрганизацийОстатки
|ГДЕ
| ТоварыОрганизацийОстатки.Организация = &Организация
| И ТоварыОрганизацийОстатки.Номенклатура = &Номенклатура";
Запрос = Новый Запрос;
Запрос.Текст = Текст;
Запрос.УстановитьПараметр("Дата",Дата);
Запрос.УстановитьПараметр("Организация",Организация);
Запрос.УстановитьПараметр("Номенклатура",Номенклатура);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Количество = ?(Выборка.Следующий(),Выборка.Количество,0);
Возврат Количество;
КонецФункции
Процедура ПоказатьОстатокСклада(КолонкиТабПоля, ЯчейкиСтрокиТабПоля, Номенклатура) Экспорт
Если КолонкиТабПоля.ОстатокСклада.Видимость Тогда
Если ТипЗнч(Номенклатура) = Тип("СправочникСсылка.Номенклатура") Тогда
Остаток = ОстатокНаСкладе(Номенклатура);
ЯчейкиСтрокиТабПоля.ОстатокСклада.УстановитьТекст(Остаток);
Иначе
ЯчейкиСтрокиТабПоля.ОстатокСклада.УстановитьТекст("");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПоказатьОстатокОрганизации(КолонкиТабПоля, ЯчейкиСтрокиТабПоля, Номенклатура) Экспорт
Если КолонкиТабПоля.ОстатокОрганизации.Видимость Тогда
Если ТипЗнч(Номенклатура) = Тип("СправочникСсылка.Номенклатура") Тогда
Остаток = ОстатокОрганизации(Номенклатура);
ЯчейкиСтрокиТабПоля.ОстатокОрганизации.УстановитьТекст(Остаток);
Иначе
ЯчейкиСтрокиТабПоля.ОстатокОрганизации.УстановитьТекст("");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//RS.
Далее в табличной части Товары формы документа добавляем две колонки - ОстатокСклада и ОстатокОрганизации. Желательно,
чтобы два свойства колонки имели такие значения:
Данные - пусто;
ЭлементУправления = ПолеВвода;
Затем заходим в событие ТЧ Товары - ПриВыводеСтроки и попадаем в процедуру формы ТоварыПриВыводеСтроки.
В конце ее текста вставляем две наши строчки:
//RS:
ПоказатьОстатокСклада(мКолонкиТовары, ОформлениеСтроки.Ячейки, ДанныеСтроки.Номенклатура);
ПоказатьОстатокОрганизации(мКолонкиТовары, ОформлениеСтроки.Ячейки, ДанныеСтроки.Номенклатура);
//RS.
ПоказатьПо теме из базы знаний
- Выявление и работа с неликвидом (залежавшимся товаром) и дефицитом номенклатуры
- Дропшиппинг или "виртуальные" склады поставщиков в 1С
- Анализ доступности товаров на складах с ценой для УТП, с доработанными колонками цена, и цена в валюте регламентированного учета
- Помощник оформления заказов поставщикам
- Расширение заказов (Обеспечение заказов в форме списка заказов покупателей) в 1С:УНФ
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1), лучше использовать событие ПриПолученииДанных вместо ПриВыводеСтроки, гораздо быстрее.
Примерно так:
Примерно так:
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
Если ОформленияСтрок.Количество() = 0 Тогда
Возврат;
КонецЕсли;
МассивНоменклатуры = Новый Массив;
Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
МассивНоменклатуры.Добавить(ОформлениеСтроки.ДанныеСтроки.Номенклатура);
КонецЦикла;
Текст = "ВЫБРАТЬ
| ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
| ТоварыОрганизацийОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(&Дата, ) КАК ТоварыОрганизацийОстатки
|ГДЕ
| ТоварыОрганизацийОстатки.Организация = &Организация
| И ТоварыОрганизацийОстатки.Номенклатура В (&МассивНоменклатуры)";
Запрос = Новый Запрос;
Запрос.Текст = Текст;
Запрос.УстановитьПараметр("Дата",Дата);
Запрос.УстановитьПараметр("Организация",Организация);
Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);
ОстаткиОрганизации = Запрос.Выполнить().Выгрузить();
ОстаткиОрганизации.Индексы.Добавить("Номенклатура");
Для Каждого ОформлениеСтроки из ОформленияСтрок Цикл
НайденнаяСтрока = ОстаткиОрганизации.Найти(ОформлениеСтроки.ДанныеСтроки.Номенклатура, "Номенклатура");
Если НайденнаяСтрока <> Неопределено Тогда
ОформлениеСтроки.Ячейки.ОстатокОрганизации.ОтображатьТекст = Истина;
ОформлениеСтроки.Ячейки.ОстатокОрганизации.Текст = ""+НайденнаяСтрока.Количество;
Иначе
ОформлениеСтроки.Ячейки.ОстатокОрганизации.ОтображатьТекст = Ложь;
КонецЕсли;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот