Столкнулся с такой ошибкой, при выводе информации на печатную форму, платформа выдает следующее сообщение:
Ошибка при вызове метода контекста (ПроверитьВывод)…
ПроверитьВывод() — это метод табличного документа, который проверяет, умещаются ли переданные табличные документы на страницу при печати. В примечании у этого метода разработчики платформы 1С сразу написали, что при возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.
Проверил установленные принтеры, все исправно и работает. Эмпирическим путем выяснил, что данная ошибка возникает только у конкретной печатной формы и только под одним пользователем.
Ошибка решилась следующими действиями (выполнять под пользователем, у которого возникла ошибка):
1) Создал пустой документ, что бы при формировании печатной формы не был задействован метод ПроверитьВывод(). Если же этот метод в любом случае вызывается, то придется его найти в конфигурации и закомментировать, или же поместить в конструкцию Попытка-Исключение-КонецПопытки.
1. Помещение ПроверитьВывод в попытку |
2) Сформировал печатную форму.
1. Помещение ПроверитьВывод в попытку |
2) Сформировал печатную форму.
2. Пустая печатная форма (кол-во товаров = 0) |
3) Для текущей печатной формы открыл параметры страницы и установил правильные параметры.
3. Параметры страницы |
Ошибка возникала из-за неправильных параметров страницы, которые платформа сохранила ранее при выводе на печать печатной формы, например: платформа сохранила в параметрах страницы принтер, который в дальнейшем удалили и установили новый. Параметры страницы печатной формы хранятся в свойстве табличного документа КлючПараметровПечати. Это свойство содержит ключ значения, в котором сохраняются параметры печати таблицы. Параметры печати, настроенные и сохраненные с данным ключом, впоследствии восстанавливаются при следующем показе таблицы.
Что бы данная ошибка не возникала из-за неправильных параметров страницы, свойство КлючПараметровПечати следует устанавливать не в начале процедуры вывода на печать, а в конце, так как при установке данного свойства параметры печати тут же восстанавливаются.
UPD 04/10/2015: Если устанавливать свойство КлючПараметровПечати в конце формирования табличного документа, то метод ПроверитьВывод будет использовать параметры печати установленные по-умолчанию, а не пользовательские. Что бы избежать данной ситуации, необходимо устанавливать свойство КлючПараметровСистемы в начале формирования табличного документа, а метод ПроверитьВывод поместить в конструкцию Попытка-Исключение-КонецПопытки.
Ошибка при вызове метода контекста (ПроверитьВывод)
{Документ.РасхНалоговаяНакладная.Форма.ФормаДокумента.Форма(3444)}: Ошибка при вызове метода контекста (ПроверитьВывод)
Если Таб.ПроверитьВывод(ТабЗнач.ВыгрузитьКолонку(«Секция»)) Тогда
по причине:
в конфигураторе дает ссылку на процедуру
Процедура ПроверкаСтрок (Таб,ТабЗнач, МассивНевыведенныхСтрок)
Если Таб.ПроверитьВывод(ТабЗнач.ВыгрузитьКолонку(«Секция»)) Тогда
Возврат ;
Иначе
к = ТабЗнач.Количество();
Пока к >1 Цикл
СтрокаТаб = ТабЗнач[к-1] ;
Если СтрокаТаб.ВидСекцие=»Пустая» Тогда
ТабЗнач.Удалить(к-1);
Если Таб.ПроверитьВывод(ТабЗнач.ВыгрузитьКолонку(«Секция»)) Тогда
Прервать;
КонецЕсли;
Иначе
Если СтрокаТаб.ВидСекцие=»Строка» Тогда
СтрокаМассива = Новый Структура(«Секция,ВидСекцие»);
ЗаполнитьЗначенияСвойств(СтрокаМассива, СтрокаТаб);
МассивНевыведенныхСтрок.Добавить(СтрокаМассива);
ТабЗнач.Удалить(к-1);
Если Таб.ПроверитьВывод(ТабЗнач.ВыгрузитьКолонку(«Секция»)) Тогда
Прервать;
КонецЕсли;
КонецЕсли;
КонецЕсли;
к=к-1;
КонецЦикла;
КонецЕсли;
КонецПроцедуры // ПроверкаСтрок()
При формировании отчета по НДС дает то же самое =(
Помогите пожалуйста — завтра последний срок сдачи отчетности. Если нужны еще какие-то данные — я напишу.
-
Обнаружены ошибки:
{Документ.РеализацияТоваровУслуг.МодульОбъекта (1155)}: Ошибка при вызове метода контекста (ПроверитьВывод)
Если Ном <> 1 И НЕ ТабДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
по причине:Такая ошибка возникает у одного из пользователей удаленного рабочего стола.
Если я со своей машины захожу таким же образом под тем же самым пользователем (и системным и пользователем 1С) у меня такая ошибка не возникает.
что может быть?
-
3. Параметры страницы Ошибка возникала из-за неправильных параметров страницы, которые платформа сохранила ранее при выводе на печать печатной формы, например: платформа сохранила в параметрах страницы принтер, который в дальнейшем удалили и установили новый. Параметры страницы печатной формы хранятся в свойстве табличного документа КлючПараметровПечати. Это свойство содержит ключ значения, в котором сохраняются параметры печати таблицы. Параметры печати, настроенные и сохраненные с данным ключом, впоследствии восстанавливаются при следующем показе таблицы.
Что бы данная ошибка не возникала из-за неправильных параметров страницы, свойство КлючПараметровПечати следует устанавливать не в начале процедуры вывода на печать, а в конце, так как при установке данного свойства параметры печати тут же восстанавливаются.
UPD 04/10/2015: Если устанавливать свойство КлючПараметровПечати в конце формирования табличного документа, то метод ПроверитьВывод будет использовать параметры печати установленные по-умолчанию, а не пользовательские. Что бы избежать данной ситуации, необходимо устанавливать свойство КлючПараметровСистемы в начале формирования табличного документа, а метод ПроверитьВывод поместить в конструкцию Попытка-Исключение-КонецПопытки.
Ошибка при вызове метода контекста (ПроверитьВывод)
{Документ.РасхНалоговаяНакладная.Форма.ФормаДокумента.Форма(3444)}: Ошибка при вызове метода контекста (ПроверитьВывод)
Если Таб.ПроверитьВывод(ТабЗнач.ВыгрузитьКолонку(«Секция»)) Тогда
по причине:в конфигураторе дает ссылку на процедуру
Процедура ПроверкаСтрок (Таб,ТабЗнач, МассивНевыведенныхСтрок)
Если Таб.ПроверитьВывод(ТабЗнач.ВыгрузитьКолонку(«Секция»)) Тогда
Возврат ;
Иначе
к = ТабЗнач.Количество();
Пока к >1 Цикл
СтрокаТаб = ТабЗнач[к-1] ;
Если СтрокаТаб.ВидСекцие=»Пустая» Тогда
ТабЗнач.Удалить(к-1);
Если Таб.ПроверитьВывод(ТабЗнач.ВыгрузитьКолонку(«Секция»)) Тогда
Прервать;
КонецЕсли;
Иначе
Если СтрокаТаб.ВидСекцие=»Строка» Тогда
СтрокаМассива = Новый Структура(«Секция,ВидСекцие»);
ЗаполнитьЗначенияСвойств(СтрокаМассива, СтрокаТаб);
МассивНевыведенныхСтрок.Добавить(СтрокаМассива);
ТабЗнач.Удалить(к-1);
Если Таб.ПроверитьВывод(ТабЗнач.ВыгрузитьКолонку(«Секция»)) Тогда
Прервать;
КонецЕсли;
КонецЕсли;
КонецЕсли;
к=к-1;
КонецЦикла;
КонецЕсли;
КонецПроцедуры // ПроверкаСтрок()При формировании отчета по НДС дает то же самое =(
Помогите пожалуйста — завтра последний срок сдачи отчетности. Если нужны еще какие-то данные — я напишу.-
Обнаружены ошибки:
{Документ.РеализацияТоваровУслуг.МодульОбъекта (1155)}: Ошибка при вызове метода контекста (ПроверитьВывод)
Если Ном <> 1 И НЕ ТабДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
по причине:Такая ошибка возникает у одного из пользователей удаленного рабочего стола.
Если я со своей машины захожу таким же образом под тем же самым пользователем (и системным и пользователем 1С) у меня такая ошибка не возникает.
что может быть?
-
Offline
Наташа
Опытный в 1С- Регистрация:
- 14 авг 2010
- Сообщения:
- 1.442
- Симпатии:
- 2
- Баллы:
- 29
-
это все что есть на экране, более ничего сказать не могу.
это же 1с!!! -
Offline
Requin
Опытный в 1С- Регистрация:
- 10 май 2010
- Сообщения:
- 1.911
- Симпатии:
- 2
- Баллы:
- 29
-
для того, чтобы сохранить документ в MXL, человеку нужно купить принтер? -
Offline
Requin
Опытный в 1С- Регистрация:
- 10 май 2010
- Сообщения:
- 1.911
- Симпатии:
- 2
- Баллы:
- 29
P.S. Принтер можете не покупать, просто установите какой-нибудь (файловый).
-
спасибо, передам ваш совет.
хотя уважающий себя программист осуществляет проверку на конкретное действие — в данном случае это вывод отчета: КУДА — если на экран — одна ветка, если на принтер — другая.
я так думаю, что программистам 1с надо пройти начальные курсы по основам построения логики программы, а лучше начать с базовых курсов по информатике. -
Offline
x_under
Модераторы
Команда форума
Модератор- Регистрация:
- 25 апр 2007
- Сообщения:
- 2.576
- Симпатии:
- 16
- Баллы:
- 29
:angry: Ну какой вы агрессивный. Тут же все по принципу: не нравится не ешь.
Эта функция используется для определения помещается на экран форма или нет. А без принтера, хотя бы виртуального этого не определить. Вдруг вы на А3 или А5 печатаете (ну или на рулоне бумаги)… Так что всем не угодишь.
-
Online
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.724
- Симпатии:
- 1.014
- Баллы:
- 204
кхм, ну можно было бы возвращать неопределено, в случае, если принтера нет в системе, а не вываливаться в ошибку
-
Offline
kallugin
- Регистрация:
- 22 ноя 2011
- Сообщения:
- 1
- Симпатии:
- 0
- Баллы:
- 1
UP
Та же самая ошибка, один в один, но есть нюансы:
— переустановили Винду на терминальном сервере, был 2008 х86, стал 2008 64, соответственно, драйвера принтеров уже другие
— документ, в котором всего одна строка, печатается нормально, больше одной — та самая ошибка
— с одних компьютеров выдаёт такую ошибку, с других — нет, нормально печатает. Сегодня с утра заходил на тот же сервер и печатал те самые документы для бухгалтеров, я могу печатать, они — нет. Среда одинаковая, сервер один и тот же, принтеры одни и те же (их там два сетевых), конфигурацию не меняли.
Может это быть из-за того, что система запомнила какие-то настройки «с прошлого раза» (у бухгалтеров, которые этот документ печатали)? И как бы их обнулить?
-
Offline
x_under
Модераторы
Команда форума
Модератор- Регистрация:
- 25 апр 2007
- Сообщения:
- 2.576
- Симпатии:
- 16
- Баллы:
- 29
Попробуйте базу переподключить.
-
Offline
Настя
- Регистрация:
- 3 июл 2012
- Сообщения:
- 1
- Симпатии:
- 0
- Баллы:
- 1
{Form.ФормаОтчета.Form(4)}: Ошибка при вызове метода контекста (Add)
ТабЗН.Колонки.Добавить(«ТипНомера»,»Строка»,»Тип номера»);
что за ошибка? подскажите пожалуйста -
Offline
1cUserAndrew
Профессионал в 1С
Команда форума- Регистрация:
- 27 май 2010
- Сообщения:
- 5.125
- Симпатии:
- 212
- Баллы:
- 104
Второй параметр имеет тип данных «ОписаниеТипов».
ТабЗН.Колонки.Добавить("ТипНомера", Новый ОписаниеТипов("Строка"), "Тип номера");
-
Offline
qweqweqwe123777
Новичок в 1С- Регистрация:
- 30 янв 2015
- Сообщения:
- 1
- Симпатии:
- 1
- Баллы:
- 4
у меня ошибка получения информации о принтере
решилась установкой прав на принтер.
В свойствах принтера на вкладке Безопасность добавил группу пользователей Domain users полные права
Содержание
- Зависает метод табдока ПроверитьВывод()
- ПроверитьВывод() непонятно как то работает
- АйТиБложик
- Ошибка хитрого метода ПроверитьВывод() табличного документа
- Решение проблемы ПроверитьВывод() для огромных документов
- Каких результатов удалось достичь
- Последовательность действий:
- Как это выглядит в программе
- Скачать файлы
- Специальные предложения
- См. также
- Безопасная работа с транзакциями во встроенном языке Промо
- Пример создания документа с движениями в ERP 2.5.7
- Работа с абстрактным массивом
- Семеро одного не ждут? Асинхронное исследование асинхронности
- Как выполнить отчет на СКД через COM и получить данные отчета? Промо
- Связи параметров выбора номенклатуры и характеристики в 1С 8.3
- Динамическая расшифровка СКД (на примере отчета)
- СКД: все, что вы хотели знать о подмене схемы компоновки данных в отчетах и обработках
- Как нарисовать граф на 1С Промо
- Cбор и анализ ошибок при помощи Sentry, или как упростить жизнь себе и пользователям
- Программная корректировка при выводе отчета СКД
- Загрузка, скачивание, удаление файлов с помощью НачатьПомещениеФайлаНаСервер() и НачатьПолучениеФайлаССервера()
- Простой способ индексирования интервалов Промо
- Универсальная печатная форма Приказа/Договора с возможностью настройки макета в пользовательском режиме
- Методика обновления формы объекта данных при изменении объекта
- Отправка уведомлений с помощью командной строки, Оповещения с сервера на клиент с помощью командной строки
- Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов Промо
- Вывод сообщений в HTML поле средствами 1С
- Краткое руководство по внесению изменений в конфигурацию
- Универсальные функции: разложение произвольной строки адреса в структуру
- БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному Промо
- «Живые» картинки со Snap.SVG
- RLS — дубли условий в запросах к СУБД
- Полное копирование одной формы в другую
- Некоторая работа с данными через COM Промо
- Многопоточная обработка данных на примере перепроведения документов
- Отображение истории выполнения по всем задачам комплексного процесса в документообороте
- Описание формата внутреннего представления данных 1С в контексте обмена данными
- Работа со схемой запроса Промо
Зависает метод табдока ПроверитьВывод()
Добрый день! Столкнулся тут с проблемой — есть файловая бух 3.0.41.59 и платформа 8.3.6.2237. Есть пользователь с ограниченными правами, работают все в терминале. Клиент обратился с проблемой — что у этого пользователя виснет 1с при печати любой п.ф. Вначале решили проблему просто — создали нового пользователя, проставили теже роли что и были и вроде все стало ОК, но через 2 дня ситуация повторилась. От пользователя терминала ничего не меняется. Через отладку дошел до места
Функция ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, РезультатПриОшибке = Истина) ЭкспортПопытка
Возврат ТабДокумент.ПроверитьВывод(ВыводимыеОбласти);
Исключение
Вот на этом месте оно и зависает в переменной ВыводимыеОбласти — массив из 2х строк, 1С начинает есть память пока не съест всю и отваливается со словами про нехватку памяти. подскажите куда копать? если я правильно догадываюсь — она считает что область не помещается на страницу и видимо сует ее на следующий лист, но и там она не помещается? может какие-то настройки в пользовательском режиме могут такие последствия давать? Заранее спасибо!Копать в сторону установленых (пробрасываемых, раз у нас терминальная сессия) принтеров.
На самом деле метод ПроверитьВывод имеет смысл использовать только в том случае если для формируемого табличного документа определен принтер и все его параметры страницы (ориентация, поля, колонтитулы).
Это не очевидно, отсюда и бытует мнение (1) среди 1сников.
Источник
ПроверитьВывод() непонятно как то работает
Подскажите безграмотному, где собака зарыта, пол дня уже бьюсь(
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ЭкземпляровНаСтранице = 1;Для каждого СтрокаКомиссия Из Док.ЧленыКомиссии Цикл
Если Не (ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей)) Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
НомерСтраницы = НомерСтраницы + 1;
ОбластьНомерСтраницы.Параметры.НомерСтраницы = «Страница » + НомерСтраницы;
ТабличныйДокумент.Вывести(ОбластьНомерСтраницы);
МассивВыводимыхОбластей.Очистить();
МассивВыводимыхОбластей.Добавить(ОбластьНомерСтраницы);
КонецЕсли;Если СтрокаКомиссия.НомерСтроки = 1 Тогда
ОбластьКомиссия.Параметры.СтрокаЧленыКомиссии = «Члены комиссии: «;
Иначе
ОбластьКомиссия.Параметры.СтрокаЧленыКомиссии = «»;
КонецЕсли;ОбластьКомиссия.Параметры.ФИОЧленаКомиссии = СтрокаКомиссия.ФИО;
ОбластьКомиссия.Параметры.ДолжностьЧленаКомиссии = СтрокаКомиссия.Должность;
ТабличныйДокумент.Вывести(ОбластьКомиссия);
МассивВыводимыхОбластей.Добавить(ОбластьКомиссия);
КонецЦикла;Есть такой вот код, вот не могу понять, почему у меня ПроверитьВывод срабатывает когда примерно заполнилось пол страниы
(6) без нее когда массив на страницу наполнится будет каждую строчку с новой страницы выводить
(5)(7) придется видимо ковыряться другим способом, попробую предложенным, спасибо
ПроверитьВывод не работает. однозначно. проверено на сферическом вакууме. вот как я его обошел (буквально вчера)
три табличных документа:
ТД
ТДКопия
ТДСтрокав ТДСтрока формирую строку, которую можно переносить (она может состоять из нескольких строк)
В ТДКопия вывожу область из ТДСтрока, относящуюся к этой строке таблицы.
если число страниц в тдкопия больше, чем в тд, то делаю разрыв, после чего копирую ТД в ТДКопия (чтобы разрывы совпадали), а ТДСтрока очищаю.
не забудь предусмотреть, если строка у тебя последняя, так как надо в ТДСтрока сразу загнать и подвал отчета. если же у тебя еще есть страничный подвал таблицы, то его тоже надо будет загонять в ТДСтрока.(12) ну, 200 страниц, это даааа.. придется мухлевать, тогда мой метод примени для первой страницы, а дальше проверяй этой долбанутой функцией
(13) эта хрень как раз первую страницу и портит.
(18) отпишусь тут как добил
а ты мне еще на 200 страниц предлагал))) если уже на 20 тормозит)))
Источник
АйТиБложик
Маленький IT блог с характером 1С.
Ошибка хитрого метода ПроверитьВывод() табличного документа
- Получить ссылку
- Электронная почта
- Другие приложения
Столкнулся с такой ошибкой, при выводе информации на печатную форму, платформа выдает следующее сообщение:
Ошибка при вызове метода контекста (ПроверитьВывод).ПроверитьВывод() — это метод табличного документа, который проверяет, умещаются ли переданные табличные документы на страницу при печати. В примечании у этого метода разработчики платформы 1С сразу написали, что при возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.
Проверил установленные принтеры, все исправно и работает. Эмпирическим путем выяснил, что данная ошибка возникает только у конкретной печатной формы и только под одним пользователем.
Ошибка решилась следующими действиями (выполнять под пользователем, у которого возникла ошибка):
1) Создал пустой документ, что бы при формировании печатной формы не был задействован метод ПроверитьВывод(). Если же этот метод в любом случае вызывается, то придется его найти в конфигурации и закомментировать, или же поместить в конструкцию Попытка-Исключение-КонецПопытки.1. Помещение ПроверитьВывод в попытку 2) Сформировал печатную форму.
2. Пустая печатная форма (кол-во товаров = 0) 3) Для текущей печатной формы открыл параметры страницы и установил правильные параметры.
3. Параметры страницы Ошибка возникала из-за неправильных параметров страницы, которые платформа сохранила ранее при выводе на печать печатной формы, например: платформа сохранила в параметрах страницы принтер, который в дальнейшем удалили и установили новый. Параметры страницы печатной формы хранятся в свойстве табличного документа КлючПараметровПечати. Это свойство содержит ключ значения, в котором сохраняются параметры печати таблицы. Параметры печати, настроенные и сохраненные с данным ключом, впоследствии восстанавливаются при следующем показе таблицы.
Что бы данная ошибка не возникала из-за неправильных параметров страницы, свойство КлючПараметровПечати следует устанавливать не в начале процедуры вывода на печать, а в конце, так как при установке данного свойства параметры печати тут же восстанавливаются.
UPD 04/10/2015: Если устанавливать свойство КлючПараметровПечати в конце формирования табличного документа, то метод ПроверитьВывод будет использовать параметры печати установленные по-умолчанию, а не пользовательские. Что бы избежать данной ситуации, необходимо устанавливать свойство КлючПараметровСистемы в начале формирования табличного документа, а метод ПроверитьВывод поместить в конструкцию Попытка-Исключение-КонецПопытки.
Источник
Решение проблемы ПроверитьВывод() для огромных документов
Служба информационно-технического развития _ (SITR-utyos)
Каких результатов удалось достичь
Изначально, печатная форма, содержащая
200 страниц выводилась(речь идет об именно выводе в табличный документ) > 15 минут. В результате оптимизации удалось сократить время до 1-2 минут.
Последовательность действий:
- Объявляем ТабличныйДокумент как ранее, настраиваем его свойства(Масштаб, ориентация страницы, поля);
- Объявляем еще один табличный документ, назовем его ИтоговыйТабличныйДокумент, копируем в него все свойства ранее созданного;
- Выполняем вывод одной страницы в ТабличныйДокумент, проверяем, умещается ли он или нет с помощью метода ПроверитьВывод()
- Когда вывод не умещается на странице ТабличныйДокумент, то:
- Выполняем его вывод в ИтоговыйТабличныйДокумент методом Вывести(ТабличныйДокумент)
- Очищаем ТабличныйДокумент
- Выводим шапку(если требуется) в Табличный документ
- Пункты 3-4 повторяются в цикле, как и при обычном формировании печатных форм
- В конце формирования выводим подвал в ИтоговыйТабличныйДокумент
Как это выглядит в программе
Бонусом идет печатная форма для УПП 1.3, в которой присутствует этот кусок кода
Скачать файлы
Специальные предложения
На 8.3.11 не проверяли? Там что-то оптимизировали на эту тему:
Что-то подобное в расчетном листке организации ЗУП 2.5 используется.
(11) да не область на 300 страниц. А сам табличный документ на 300 страниц.
Автор предлагает не вызывать ПроверитьВывод() для большого документа на 300 страниц, а вызывать эту функцию только для малого табличного документа, который равен последней странице большого.
Ускорение происходит не за счет того, что уменьшается количество вызовов функции ПроверитьВывод(), а за счет того, что каждый вызов занимает в разы меньше времени.
Обновление 06.11.17 16:44
См. также
Безопасная работа с транзакциями во встроенном языке Промо
Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку «В данной транзакции уже происходили ошибки». Учимся защищаться от них.
25.03.2019 45288 tormozit 58
Пример создания документа с движениями в ERP 2.5.7
Пример создания документа с движениями в ERP 2.5.7, а также включение документа в основные подсистемы, а именно по управлению доступом, датам запрета изменения, контролю остатков, использованию характеристик и серий и прочее.
10.08.2021 1907 maraty 10
Работа с абстрактным массивом
Абстрактные типы данных и алгоритмы уверенно набирают популярность в языках общего назначения. Встроенный язык 1С является предметно-ориентированным и не спешит развиваться в сторону поддержки абстракций. Однако потребность в них существует, т.к. задачи, решаемые на платформе, не уступают разнообразию из других ЯП. Предлагаю рассмотреть вариант реализации абстрактного массива в 1С.
07.07.2021 3687 kalyaka 56
Семеро одного не ждут? Асинхронное исследование асинхронности
Все уже, наверное, знают о появлении в новых версиях платформы асинхронных функций и конструкций Асинх/Ждать. Многие, возможно, уже их используют. Но что будет, если создать свои асинхронные функции, запустить и не дожидаться окончания их выполнения? Неужели можно запустить несколько процессов параллельно?
08.06.2021 5369 Alxby 45
Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, «скопипастить» текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его «немного модифицированная» копия. В статье будет рассмотрен пример получения данных из базы ЗУП.
08.05.2018 31899 wowik 3
Связи параметров выбора номенклатуры и характеристики в 1С 8.3
Из этой статьи вы узнаете, как, используя системы стандартов и методик разработки 1С, правильно настроить связи параметров выбора номенклатуры и характеристики в новой табличной части.
22.02.2021 1348 plotnikov1c 2
Динамическая расшифровка СКД (на примере отчета)
Предлагаю Вашему неподкупному вниманию вариант более-менее унифицированной реализации динамически формирующейся расшифровки СКД на примере простейшего отчета для конфигурации УТ 11.
08.12.2020 1536 mr_sav 2
СКД: все, что вы хотели знать о подмене схемы компоновки данных в отчетах и обработках
Довольно часто на различных тематических форумах задается вопрос, можно ли использовать в отчете/обработке несколько схем компоновки данных, подменяя одну другой по мере надобности? При этом желательно, чтобы и пользовательские настройки при смене схемы менялись соответственно.
07.12.2020 5049 user1502278 18
Описывается реализация на языке запросов 1С метода расположения вершин графа на плоскости, основанного на использовании электромеханической аналогии. При этом вершины графа представляются одноименными электрическими зарядами, дуги — пружинками. Силы взаимодействия вершин в этой системе переводят их из случайного начального в нужное конечное положение. Приведена обработка рисования графов «ГрафОграф», реализующая данный подход, показывающая также динамику процесса. Граф можно задать списком ребер вручную, выбрать из нескольких предопределенных примеров или сформировать по данным информационной базы.
09.08.2013 73463 ildarovich 117
Cбор и анализ ошибок при помощи Sentry, или как упростить жизнь себе и пользователям
Цель данной статьи — сделать процесс сбора и анализа ошибок, происходящих в базе, максимально простым, быстрым и удобным, собирать статистику по ошибкам, местам их возникновения и частоте их появления, а также в деталях разобрать все тонкости по интеграции 1С с Sentry.
09.10.2020 7293 hexhoc 12
Программная корректировка при выводе отчета СКД
Большинство отчетов на СКД, требующих программной корректировки, реализуются с помощью программной настройки СКД или обработки табличного документа уже после вывода отчета. Но во многих случаях более оптимально будет выполнять программную корректировку в процессе вывода отчета. Для этого существуют программные объекты, о которых я расскажу в данной статье.
08.10.2020 10699 dabu-dabu 16
Загрузка, скачивание, удаление файлов с помощью НачатьПомещениеФайлаНаСервер() и НачатьПолучениеФайлаССервера()
В платформе 8.3.15 появились новые методы НачатьПомещениеФайлаНаСервер() и НачатьПолучениеФайлаССервера(). В данной статье рассмотрено готовое решение проверенное и прекрасно работающее на тонком и веб-клиенте.
25.07.2020 11529 Flashill 15
Простой способ индексирования интервалов Промо
Предлагается простой способ индексирования интервалов для решения задач выборки записей, включающих заданный момент времени, пересекающихся с заданным интервалом или множеством интервалов. Способ основан на добавлении к исходной таблице особого числового индексированного поля, рассчитываемого по специальной формуле. Приведен код функций, необходимых для расчетов поля поиска и параметров поисковых запросов. Приведены также результаты тестирования метода, доказывающие его высокую эффективность.
28.09.2016 41987 ildarovich 22
Универсальная печатная форма Приказа/Договора с возможностью настройки макета в пользовательском режиме
В данной статье я опишу реализацию универсальной (в кавычках) печати Приказа (Договора или чего пожелаете) с возможностью настройки выводимого текста с параметрами из пользовательского режима. Обработка для скачивания написана для доработанной конфигурации клиента ЗУП версии 3.1.13.120. Перед внедрением в свою конфигурацию ее необходимо будет дорабатывать.
24.06.2020 2418 BuriyLesha 3
Методика обновления формы объекта данных при изменении объекта
В формах объектов данных часто встречаются элементы, косвенно связанные с объектом. Логику обновления этих элементов при изменении объекта обычно вызывают из обработчиков ПриСозданнииНаСервере и ПриОткрытии, забывая про наличие других способов изменения объекта. В статье предложена методика для обычных и управляемых форм, учитывающая все способы.
09.03.2020 20071 tormozit 16
Отправка уведомлений с помощью командной строки, Оповещения с сервера на клиент с помощью командной строки
Отправка уведомлений с помощью команды командной строки msg. Оповестить пользователей из серверного модуля или регламентного задания, с помощью командной строки msg.
05.03.2020 8063 user5300 3
Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов Промо
Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.
01.02.2018 38268 rpgshnik 54
Вывод сообщений в HTML поле средствами 1С
Пример использования вывода большого количества сообщений в поле HTML. С возможностью открывать ссылочные объекты и создавать новые объекты передавая параметры прямо из HTML поля. Протестировано на релизах 8.3.12 и 8.3.15+
31.01.2020 10578 burni4 16
Краткое руководство по внесению изменений в конфигурацию
Кратко описаны основополагающие моменты при старте групповой разработки конфигурации несколькими программистами. Полезно для проектной документации как требование к разработчикам или сопровождающей компании.
13.01.2020 22641 sapervodichka 41
Универсальные функции: разложение произвольной строки адреса в структуру
Процедуры и функции раскладывают произвольную строку адрес в структуру по ключевым словам.
30.12.2019 5893 vik070777 10
БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному Промо
Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.
10.05.2018 54002 dsdred 46
«Живые» картинки со Snap.SVG
В статье рассмотрен пример использования http-сервисов для визуализации данных
24.10.2019 15110 blackhole321 7
RLS — дубли условий в запросах к СУБД
«Подводные камни», возникающие при бездумном копировании ролей с ограничениями RLS, как это отражается на производительности, разбор примера и инструмент для анализа.
07.10.2019 10030 geron4 4
Полное копирование одной формы в другую
Однажды я столкнулся с необходимостью открыть форму ЛЮБОГО документа с определенными изменениями, не зависящими от структуры объекта (например, заблокировать все кнопки). В интернете решения я не нашел. Обычно на форумах на запросы подобного рода отвечают чем-то вроде «покажи первоначальную задачу, а не спрашивай как реализовать то, что ты придумал». Тем не менее, мне стало интересно, как это можно сделать.
03.10.2019 7942 nekit_rdx 25
В статье приведены примеры работы с Платформой 8.X через COM (точнее, через объект COMConnector). Примеры кода были использованы при реализации прикладных задач в процессе трудовой деятельности.
05.12.2012 59939 wowik 32
Многопоточная обработка данных на примере перепроведения документов
Дальнейшее развитие темы фоновой обработки данных — проведение документов в потоках. Настройка параметров и запуск основного процесса (менеджера потоков). Разбивка документов для проведения на не связанные друг с другом наборы и запуск дополнительных фоновых заданий для отдельных потоков. Отслеживание выполнения каждого потока в родительском сеансе.
17.09.2019 12751 ids79 46
Отображение истории выполнения по всем задачам комплексного процесса в документообороте
Коллеги, предлагаю вашему вниманию доработку для вывода полной истории в задачах комплексного процесса.
15.09.2019 8758 pavelpribytkin96 8
Описание формата внутреннего представления данных 1С в контексте обмена данными
Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на «внутреннюю кухню» платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа. Так, именно на использовании внутреннего представления был построен алгоритм «быстрого массива», который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно «на лету» программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.
06.09.2019 21737 Dementor 31
Стандартом взаимодействия с реляционной базой данных стал язык SQL. Приемником SQL в 1С является язык запросов. Язык запросов, также как и SQL, является структурированным. Составляющие структуры запроса отвечают на разные вопросы о том, какие данные требуется получить и какие манипуляции с множествами данных необходимо произвести при получении. В простых случаях текст запроса можно написать вручную, однако в сложных случаях, а также при программном формировании, — лучше воспользоваться объектной моделью запроса и использовать объект «Схема запроса». В статье дается описание объектной модели и особенностей работы с ней, а также приводится решение, упрощающее взаимодействие с объектом «Схема запроса».
Источник
Adblock
detectorНаименование Файл Версия Размер В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Номенклатура.ВерсияДанных КАК ВерсияДанных, | Номенклатура.ПометкаУдаления КАК ПометкаУдаления, | Номенклатура.Родитель КАК Родитель, | Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | Номенклатура.Код КАК Код, | Номенклатура.Наименование КАК Наименование, | Номенклатура.Артикул КАК Артикул, | Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры, | Номенклатура.Предопределенный КАК Предопределенный, | Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | "; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл КонецЦикла;
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.
Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Номенклатура.ВерсияДанных КАК ВерсияДанных, | Номенклатура.ПометкаУдаления КАК ПометкаУдаления, | Номенклатура.Родитель КАК Родитель, | Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | Номенклатура.Код КАК Код, | Номенклатура.Наименование КАК Наименование, | Номенклатура.Артикул КАК Артикул, | Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры, | Номенклатура.Предопределенный КАК Предопределенный, | Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | НЕ Номенклатура.ЭтоГруппа "; НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель"); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов")); КонецЦикла;
Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной 1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.
Рис.3 Синтакс-помощник В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.
Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.
-