helpf.pro
Регистрация
 0 
Распечатать

1С 8.x : Пример проверки на заполнения нужных нам колонок в табличной части документа

Код 1C v 8.х
 МассивКолонок = Новый Массив;
МассивКолонок.Добавить("Количество");

СсылочныеКолонки = Новый Соответствие;
СсылочныеКолонки["Адрес"] = Справочники.АдресаЯчеек.ПустаяСсылка();
СсылочныеКолонки["Товар"] = Справочники.Номенклатура.ПустаяСсылка();
ПроверкаЗаполненияТабличнойЧасти(Ссылка, "Товары", МассивКолонок, СсылочныеКолонки, Отказ);

//выбирает не заполненные строки
//СсылкаНаОбъект - ссылка на проверяемый документ, ИмяТабЧасти - имя проверяемой табличной части,
//СписокКолонок - массив с именами колонок
//СсылочныеКолонки - соответсвие имен колонок и пустых ссылок типов этих колонок
Процедура ПроверкаЗаполненияТабличнойЧасти(СсылкаНаОбъект, ИмяТабЧасти = "Товары", СписокКолонок, СсылочныеКолонки = Неопределено, Отказ = Ложь, Заголовок = "") Экспорт

ИмяДока = СсылкаНаОбъект.Метаданные().Имя;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);

ТекстЗапроса = "ВЫБРАТЬ
| Док.НомерСтроки
|ИЗ
| Документ." + ИмяДока + "." + ИмяТабЧасти + " КАК Док
|ГДЕ
| Док.Ссылка = &Ссылка И (";
СтрокаКолонок = "";

Если СсылочныеКолонки <> Неопределено Тогда

Для каждого Колонка Из СсылочныеКолонки Цикл
ТекстЗапроса = ТекстЗапроса + " Док." + Колонка.Ключ + " = &" + Колонка.Ключ + " ИЛИ";
СтрокаКолонок = СтрокаКолонок + Колонка.Ключ + ", ";
Запрос.УстановитьПараметр(Колонка.Ключ, Колонка.Значение);
КонецЦикла;

КонецЕсли;

Для каждого Колонка Из СписокКолонок Цикл
ТекстЗапроса = ТекстЗапроса + " Док." + Колонка + " = 0 ИЛИ";
СтрокаКолонок = СтрокаКолонок + Колонка + ", ";
КонецЦикла;

ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Колонка + " = 0 ИЛИ", Колонка + " = 0)");

Запрос.Текст = ТекстЗапроса;
СтрокаСообщения = "Проверка табличной части на заполнение по колонкам: " + СтрокаКолонок;
Результат = Запрос.Выполнить().Выбрать();
ЕстьОшибки = Ложь;
Пока Результат.Следующий() Цикл

СтрокаСообщения = СтрокаСообщения + Символы.ПС
+ "В строке № " + Формат(Результат.НомерСтроки, "ЧГ=0")
+ " есть не заполненное значение!";
ЕстьОшибки = Истина;

КонецЦикла;

Если ЕстьОшибки Тогда
СообщитьОбОшибке(СтрокаСообщения, Отказ, Заголовок);
КонецЕсли;

КонецПроцедуры
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 22538
 0 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 52
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
Excel файл как Внешний источник данных 17
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img
Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 4
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же
Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 1
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же
Альтернативный перенос остатков между 7.7 и 8.1 (обработкой с ИТС ЗагрузкаДанныхИзТаблДокум) 2
Нашел альтернативный, практически моментальный способ переноса остатков между семерой и восьмерой (так и между восмерками). Не требуется никаких дополнительных усилий, программирования, писания обработок и т.д. и т.п. На ИТС есть обработка под наз
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.