Здравствуйте!
Обычные формы
Нужно на форму списка документов реализации товаров добавить колонку Оплачено. Она заполняется значением "Истина", если в связанных документах есть Банковская выписка или ПКО, иначе значение "Ложь". Или через "галочку".
Использую событие ПриПолученииДанных
В нем есть цикл. Если внутри цикла через запрос получать список связанных документов, то "тормоза" жуткие.
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
дкСписокПриВыводеСтроки(ЭтаФорма, Элемент, ОформлениеСтроки,
ОформлениеСтроки.ДанныеСтроки);
КонецЦикла;
Подскажите, пожалуйста, как можно более оптимально решить задачу?
Спасибо!
Обычные формы
Нужно на форму списка документов реализации товаров добавить колонку Оплачено. Она заполняется значением "Истина", если в связанных документах есть Банковская выписка или ПКО, иначе значение "Ложь". Или через "галочку".
Использую событие ПриПолученииДанных
В нем есть цикл. Если внутри цикла через запрос получать список связанных документов, то "тормоза" жуткие.
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
дкСписокПриВыводеСтроки(ЭтаФорма, Элемент, ОформлениеСтроки,
ОформлениеСтроки.ДанныеСтроки);
КонецЦикла;
Подскажите, пожалуйста, как можно более оптимально решить задачу?
Спасибо!
По теме из базы знаний
- Режим выбора из списка (обычные формы), очищается поле ввода при открытии сохраненных данных
- Удаление справочников для любых баз на управляемых и обычных формах
- Удаление документов и справочников для любых баз на обычных формах
- Отложенная печать (обычные формы)
- DevOps для Плейстоцена. Скрещивание обычных форм толстого клиента с практиками CI/CD
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Первым циклом собираем информацию по документам. Делаем запрос по результату заполняем соответствие информацией по оплате. Вторым циклом отображаем значения на форме. В типовых можно посмотреть на процедуру ЭДО_ФормаСпискаДокумента_ПриПолученииДанных, общего модуля ЭлектронныеДокументыПереопределяемый. Как пишет (3) ни в коем случае не делать.
(4)
А вы её хотя бы смотрели?
Да, реализовано как везде рекомендуют - через соответствие...
правда запрос к специальному регистру, где уже все вычислено и подготовлено к выводу, что в корне все меняет:)
Попробуйте посложнее запрос написать и задержка в десятые секунды будет так сильно напрягать глаз...
В типовых можно посмотреть на процедуру ЭДО_ФормаСпискаДокумента_ПриПолученииДанных, общего модуля ЭлектронныеДокументыПереопределяемый. Как пишет (3) ни в коем случае не делать.
А вы её хотя бы смотрели?
Да, реализовано как везде рекомендуют - через соответствие...
Процедура ЭДО_ФормаСпискаДокумента_ПриПолученииДанных(Элемент, ОформленияСтрок, мИспользоватьОбменЭД, ЭтоСчетФактура = Ложь) Экспорт
Если ЭтоСчетФактура Тогда
ВидимостьКолонок = Элемент.Колонки.СостояниеЭД.Видимость
ИЛИ Элемент.Колонки.ДействияСНашейСтороны.Видимость
ИЛИ Элемент.Колонки.ДействияСоСтороныДругогоУчастника.Видимость;
Иначе
ВидимостьКолонок = Элемент.Колонки.СостояниеЭД.Видимость;
КонецЕсли;
Если Не мИспользоватьОбменЭД ИЛИ Не ВидимостьКолонок Тогда
Возврат;
КонецЕсли;
// Сформируем массив документов для получения состояния
ДокументыДляПолученияСостояния = Новый Массив();
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
ДокументыДляПолученияСостояния.Добавить(ОформлениеСтроки.ДанныеСтроки.Ссылка);
КонецЦикла;
СостоянияЭД = ЭлектронныеДокументы.ПолучитьТекстСостоянияЭДПоВладельцам(ДокументыДляПолученияСостояния, ЭтоСчетФактура);
Если ЭтоСчетФактура Тогда
Для Каждого оформлениеСтроки Из ОформленияСтрок Цикл
ОформлениеСтроки.Ячейки.СостояниеЭД.Видимость = Ложь;
СостояниеЭД = СостоянияЭД[ОформлениеСтроки.ДанныеСтроки.Ссылка];
ДействияСНашейСтороны = ?(СостояниеЭД = Неопределено, "", СостояниеЭД.ДействияСНашейСтороны);
ДействияСоСтороныДругогоУчастника = ?(СостояниеЭД = Неопределено, "", СостояниеЭД.ДействияСоСтороныДругогоУчастника);
ОформлениеСтроки.Ячейки.ДействияСНашейСтороны.УстановитьТекст(ДействияСНашейСтороны);
ОформлениеСтроки.Ячейки.ДействияСоСтороныДругогоУчастника.УстановитьТекст(ДействияСоСтороныДругогоУчастника);
КонецЦикла
Иначе
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
ОформлениеСтроки.Ячейки.СостояниеЭД.УстановитьТекст(СостоянияЭД[ОформлениеСтроки.ДанныеСтроки.Ссылка]);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показать
Функция ПолучитьТекстСостоянияЭДПоВладельцам(МассивСсылокНаВладельцев, ПомещатьВСтруктуру = Ложь) Экспорт
ТаблицаДанных = ЭлектронныеДокументыСлужебныйВызовСервера.ПолучитьДанныеЭДПоВладельцам(МассивСсылокНаВладельцев);
Соответствие = Новый Соответствие;
Для Каждого ТекСтрока Из ТаблицаДанных Цикл
Если ПомещатьВСтруктуру Тогда
СостояниеВерсииЭД = Новый Структура("СостояниеВерсииЭД, ДействияСНашейСтороны, ДействияСоСтороныДругогоУчастника");
ЗаполнитьЗначенияСвойств(СостояниеВерсииЭД, ТекСтрока);
Иначе
СостояниеВерсииЭД = Строка(ТекСтрока.СостояниеВерсииЭД);
КонецЕсли;
Соответствие.Вставить(ТекСтрока.ВладелецЭД, СостояниеВерсииЭД);
КонецЦикла;
Возврат Соответствие;
КонецФункции
Показатьправда запрос к специальному регистру, где уже все вычислено и подготовлено к выводу, что в корне все меняет:)
Функция ПолучитьДанныеЭДПоВладельцам(МассивСсылокНаВладельцев) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СостоянияЭД.СсылкаНаОбъект КАК ВладелецЭД,
| СостоянияЭД.СостояниеВерсииЭД КАК СостояниеВерсииЭД,
| СостоянияЭД.ДействияСНашейСтороны КАК ДействияСНашейСтороны,
| СостоянияЭД.ДействияСоСтороныДругогоУчастника КАК ДействияСоСтороныДругогоУчастника
|ИЗ
| РегистрСведений.СостоянияЭД КАК СостоянияЭД
|ГДЕ
| СостоянияЭД.СсылкаНаОбъект В(&МассивСсылокНаВладельцев)";
Запрос.УстановитьПараметр("МассивСсылокНаВладельцев", МассивСсылокНаВладельцев);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции
ПоказатьПопробуйте посложнее запрос написать и задержка в десятые секунды будет так сильно напрягать глаз...
(1)
При такой постановке задачи и решении в ПриПолученииДанных() скроллинг будет фризить всегда.
Я за отдельный реквизит.
Она заполняется значением "Истина", если в связанных документах есть Банковская выписка или ПКО, иначе значение "Ложь". Или через "галочку"
При такой постановке задачи и решении в ПриПолученииДанных() скроллинг будет фризить всегда.
Я за отдельный реквизит.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот