powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Как программно записать ячейку с именем?
25 сообщений из 41, страница 1 из 2
Как программно записать ячейку с именем?
    #36786602
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Имеем 1С:Налогоплательщик 8.1.
Необходимо программно заполнить отчет.

Как обратиться к ячейке, у которой есть имя?
Пробовал разные варианты - безуспешно.

Код: plaintext
1.
2.
3.
4.
5.
6.
Макет = Отчеты.РегламентированныйОтчетРСВ1.ПолучитьМакет("СоставПоказателей2010Кв1")
Область = Макет.ПолучитьОбласть("Раздел12")

НЕ РАБОТАЕТ
Область.Параметры.П000100010003 =  100 
Область.П000100010003.Значение =  100 
Ячейка = Макет.ПолучитьОбласть("П000100010003")

На рисунке - структура отчета.

Спасибо.
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36786670
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Область.Параметры.П000100010003 = 100;

должно работать, если свойство ячейки Заполнение стоит Параметр или Шаблон
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36786720
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Конфигураторе встаю на ячейку, правая кнопка, Свойства:

Макет
Заполнение Текст

В самом 1С:Налогоплательщик встаю на ячейку, правая кнопка, Свойства:

Основные
Имя П000100010003

Пункта Заполнение нет вообще.

Так как же мне к ней обратиться?
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36786752
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макет = Отчеты.РегламентированныйОтчетРСВ1.ПолучитьМакет("СоставПоказателей2010Кв1");
Макет.Области["П000100010003"].Текст = 100;
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36787498
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господин ПЖМакет = Отчеты.РегламентированныйОтчетРСВ1.ПолучитьМакет("СоставПоказателей2010Кв1");
Макет.Области["П000100010003"].Текст = 100;
Господин ПЖ,

говорит, что нет такого объекта.

А не может это быть связано с тем, что отчет внешний?
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36787536
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36787771
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlavА не может это быть связано с тем, что отчет внешний?

блин... если внешний конечно такого объекта нет.
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36787962
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господин ПЖ
блин... если внешний конечно такого объекта нет.
Господин ПЖ,

все там есть - с этим разобрался.
Если внимательно посмотреть на картинку из моего первого поста, то в ячейках не название параметров - тогда бы они были в угловых скобках.
Там стоят текстовые значения, которые являются названиями элементов формы.
С заполнением макета теперь все понятно.

Не очень понятно - а нужно ли его вообще заполнять?
Как из макета данные попадут в форму?
Можно ли сразу заполнять форму (на первой картинке ФормаОтчета2010Кв1)?
Форма многостраничная - как адресоваться к элементам формы в этом случае?

Буду благодарен за ответы и советы.
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36788547
RustamZz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно заполнять не форму, а документ "РегламентированныйОтчет". При открытии этого документа форма сама заполнится.
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36789110
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RustamZzНужно заполнять не форму, а документ "РегламентированныйОтчет". При открытии этого документа форма сама заполнится.
RustamZz,

можно чуть подробнее?
Да, в реквизитах "РегламентированныОтчет" есть ИсточникОтчета, НаименованиеОтчета, ДанныеОтчета.
Но куда (и как) писать данные?

И правильно я понял, что никакие макеты мне для этого не нужны?
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36789267
RustamZz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очевидно, что данные писать в ДанныеОтчета. Макет нужен, но другой тот, где перечислены сохраняемые реквизиты.
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36789885
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RustamZzОчевидно, что данные писать в ДанныеОтчета. Макет нужен, но другой тот, где перечислены сохраняемые реквизиты.
RustamZz,

как писать данные в ДанныеОтчета - каким образом связываются сотни ячеек конкретной формы с теми значениями, которые я хочу в них увидеть?
Какой "другой" макет нужен и где я его должен создать?

Если Вас не затруднит - можно небольшой кусок кода, как программно заполнить отчет.
Погуглив, я не нашел ни одного примера программого формирования отчета.

Спасибо.
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36790035
RustamZz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
ПоказателиОтчета = Новый Структура();

ЗаполнитьПоказатели(ПоказателиОтчета);

// формируем список сохранения
СписокСохранения = Новый Структура();
// вставляем данные редактируемых ячеек таблицы	
СписокСохранения.Вставить("ПоказателиОтчета", ПоказателиОтчета);
// вставляем данные многострочных разделов
СписокСохранения.Вставить("ДанныеМногострочныхРазделов", мСтруктураМногострочныхРазделов);
// вставляем данные многостраничных разделов
СписокСохранения.Вставить("ДанныеМногостраничныхРазделов", мСтруктураМногостраничныхРазделов);
// вставляем данные вариантов автозаполнения ячеек
СписокСохранения.Вставить("ДанныеВариантовАвтоЗаполнения", мСтруктураВариантыЗаполнения);
// вствляем версию формы
СписокСохранения.Вставить("ВерсияФормы", мВерсияФормы);
// вствляем флажок пересчета страниц
СписокСохранения.Вставить("ФлПодсчетСтраниц", мСчетчикСтраниц);
// вствляем флажок отключения
СписокСохранения.Вставить("ФлОтклВыборЗначений", Ложь);
// вствляем флажок ручной ввод
СписокСохранения.Вставить("Автозаполнение", Ложь);
// вствляем флажок разрешения печати без штрихкода
СписокСохранения.Вставить("ПечатьБезШтрихкодаРазрешена", Истина);

ХранилищеДанных = Новый ХранилищеЗначения(СписокСохранения);
Док.ДанныеОтчета = ХранилищеДанных;

// записываем документ, хранящий данные отчета	
Док.Записать();
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36790333
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RustamZz,

спасибо.
Пошел разбираться.

Удачи!
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36791068
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заткнулся на первом шаге - как в РегламентированныйОтчет подставить свой?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Документы.РегламентированныйОтчет.ИсточникОтчета     = "Отчеты.РегламентированныйОтчетРСВ1";
Документы.РегламентированныйОтчет.НаименованиеОтчета = "Отчеты.РегламентированныйОтчетРСВ1";
МойДок  = Документы.РегламентированныйОтчет.СоздатьДокумент();

НЕ РАБОТАЕТ НИ ОДИН ВАРИАНТ

ЭТО НАЗВАНИЕ ИЗ МОЕГО ОТЧЕТА
МояФорма = МойДок.ПолучитьФорму("ФормаОтчета2010Кв1"); 

ЭТО НАЗВАНИЕ ИЗ РегламентированныйОтчет
МояФорма = МойДок.ПолучитьФорму("ФормаДокумента");

А ЭТО ВООБЩЕ БЕЗ НАЗВАНИЯ
МояФорма = МойДок.ПолучитьФорму();

Во всех случаях говорит: Объект не поддерживает этот метод.
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36791179
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, на самом деле ошибка еще на самой первой строчке - где ИсточникОтчета .
И наверно это правильно - документ еще не создан.
Но если я поставлю первые две строки после СоздатьДокумент - то какой же в этом смысл?

Как все-таки перед СоздатьДокумент указать из какого именно отчета?
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36791288
1C ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в чем смысл сего шаманства?
Заполнить реквизиты еще не созданного документа - это последствия превышения нормы угарного газа в Нерезиновой...
Чем не устраивает вариант создать документ и в нем заполнять регистры?


МойДок = Документы.РегламентированныйОтчет.СоздатьДокумент();
МойДок.ИсточникОтчета = "Отчеты.<<ИмяВашегоОтчетаВКонфигурации>>";
МойДок.НаименованиеОтчета = "Отчеты.<<ИмяВашегоОтчетаВКонфигурации>>";
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36791293
1C ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сам перегрелся, реквизиты регистрами обозвал....
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36792971
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1C никА в чем смысл сего шаманства?
Заполнить реквизиты еще не созданного документа - это последствия превышения нормы угарного газа в Нерезиновой...
Чем не устраивает вариант создать документ и в нем заполнять регистры?


МойДок = Документы.РегламентированныйОтчет.СоздатьДокумент();
МойДок.ИсточникОтчета = "Отчеты.<<ИмяВашегоОтчетаВКонфигурации>>";
МойДок.НаименованиеОтчета = "Отчеты.<<ИмяВашегоОтчетаВКонфигурации>>";
1C ник,

видимо настало время еще раз, более четко сформулировать мою цель.
Я хочу программно заполнить конкретный регламентированный отчет и записать полученный документ.
При этом необходимо учесть:
1. Заполнение хотелось бы производить не вслепую, а визуализировав программно форму моего отчета и делая видимым пользователю процесс.
2. Форма моего отчета - многостраничная, страницы формируются динамически. Поэтому обращение к любому элементу формы требует её (формы) обязательный нормальный старт.

На данный момент мне понятно, что все манипуляции надо делать через через Документ.РегламентированныйОтчет .
Даже для того, чтобы убедиться, что мой отчет проинициирован правильно я - на первом шаге - хочу его просто увидеть.
Поэтому и выполняю очевидные, казалось бы действия:
1. Создаю документ РегламентированныйОтчет.
2. Указываю в качестве иточника мой конкретный отчет.
3. Получаю форму.
4. Открываю её визуально.

1-ый вариант : предполагаю, что после указания источника все значения шаблона РегламентированныйОтчет проинициированы значениями из моего отчета, поэтому пытаюсь взять форму по названию из моего отчета - ФормаОтчета2010Кв1 :
Код: plaintext
1.
2.
3.
4.
5.
МойДок  = Документы.РегламентированныйОтчет.СоздатьДокумент();
МойДок.РегламентированныйОтчет.ИсточникОтчета     = "Отчеты.РегламентированныйОтчетРСВ1";
МойДок.РегламентированныйОтчет.НаименованиеОтчета = "Отчеты.РегламентированныйОтчетРСВ1";

МояФорма = МойДок.ПолучитьФорму("ФормаОтчета2010Кв1"); 
МояФорма.ОткрытьМодально();

На ПолучитьФорму получаю ошибку - Недопустимое значение параметра .

Ладно, не беда - значит надо обращаться по имени, которое указано в стандартном РегламентированномОтчете - ФормаДокумента .

2-ой вариант :
Код: plaintext
1.
2.
3.
4.
5.
МойДок  = Документы.РегламентированныйОтчет.СоздатьДокумент();
МойДок.РегламентированныйОтчет.ИсточникОтчета     = "Отчеты.РегламентированныйОтчетРСВ1";
МойДок.РегламентированныйОтчет.НаименованиеОтчета = "Отчеты.РегламентированныйОтчетРСВ1";

МояФорма = МойДок.ПолучитьФорму("ФормаДокумента"); 
МояФорма.ОткрытьМодально();
Результат - ошибок нет. Но и формы на экране - тоже нет.
Оно и понятно - в ней так и написано: "Эта форма вспомогательная, визуально не отображается".

И теперь меня терзают смутные сомнения - как программно получить такое элементарное действие, как двойной щелчок мышью по регламентированному отчету, когда он появляется на экране?
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36795242
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все оказалось значительно проще.
Так отчет создается и сохраняется:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
мойОтчет = Отчеты.РегламентированныйОтчетРСВ1.Создать();

ФормаОтч = мойОтчет.ПолучитьФорму("ФормаОтчета2010Кв1");
ФормаОтч.Открыть();

ФормаОтч.ЭлементыФормы.ПолеТабличногоДокументаРаздел12.Области["П000100010003"].СодержитЗначение = Истина;
ФормаОтч.ЭлементыФормы.ПолеТабличногоДокументаРаздел12.Области["П000100010003"].Значение =  567 ;

ФормаОтч.Сохранить();

Теперь другая проблема - не сохраняется значение, которое я пишу в ячейку.
Имя П000100010003 - имя ячейки, которое я вижу в Свойствах, когда открываю отчет руками.

В чем моя ошибка?
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36795355
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мухи отдельно, котлеты отдельно... не все что отображается в документе в нем же хранится. Тем более когда это в табличном поле болтается. Сидеть смотреть что делает функция .Сохранить() от формы... чего и куда она пишет (если вообще пишет)
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36800315
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Документ регламентированного отчета создается - с этим разобрался.

Теперь не могу решить обратную задачу - имея документ регламентированного отчета программно его открыть.
Делаю так - выбираю в диалоге нужный документ:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
ФормаВыбора = Документы.РегламентированныйОтчет.ПолучитьФормуВыбора();
ФормаВыбора.ДокументСписок.Отбор.НаименованиеОтчета.ВидСравнения = ВидСравнения.Равно;
ФормаВыбора.ДокументСписок.Отбор.НаименованиеОтчета.Значение = "РСВ-1 ПФР";
ФормаВыбора.ДокументСписок.Отбор.НаименованиеОтчета.Установить();
ФормаВыбора.Заголовок = "Выберите документ РСВ-1 ПФР";
ВыбДок = ФормаВыбора.ОткрытьМодально();    

ФормаДок = ВыбДок.ПолучитьФорму("ФормаОтчета2010Кв1");
ФормаДок.ОткрытьМодально();

На ПолучитьФорму ругается - Недопустимое значение параметра 1 .
Хотя в реквизите ВыбраннаяФорма документа именно это название и стоит.

Как программно открыть документ регламентированного отчета?

Спасибо.
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36801733
Фотография valex13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерно так ...
Код: plaintext
1.
2.
3.
НужныйДокумент = Документы.МойДокумент.НайтиПоНомеру(НомерНокумента);
Форма = НужныйДокумент.ПолучитьФорму("ФормаДокумента");
Форма.ОткрытьМодально();
Иными словами, тебе нужно в начале определить ссылку на объект - документ, а потом вызывай его методы.
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36801893
Фотография Slav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valex13
...
Иными словами, тебе нужно в начале определить ссылку на объект - документ, а потом вызывай его методы.
valex13,

тут прикол в другом.
То, что я правильно беру документ я уверен. После диалогового выбора документа

Код: plaintext
ВыбДок = ФормаВыбора.ОткрытьМодально();    

я даже реквизиты проверяю - все ОК.

С формой же засада в следующем.
Все регламентированные отчеты создаются на базе Документ.РегламентированныйОтчет. Если не полениться и посмотреть в Конфигураторе на его формы, то можно увидеть ФормаДокумента. Посмотрите на неё - не пожалеете. :)
В реквизитах же этого Документа есть ВыбраннаяФорма, в котором - я проверял - хранится название формы из того конкретного регламентируемого отчета, на основании которого создан конкретный документ.
Я смотрел в отладчике - при старте это название хитро подсовывается вместо родного.
Но внешние программные возможности 1С этого сделать не позволяют.

Короче, любого желающего прошу проверить маленькую прогу:

Код: plaintext
1.
2.
3.
4.
ФормаВыбора = Документы.РегламентированныйОтчет.ПолучитьФормуВыбора();
ВыбДок = ФормаВыбора.ОткрытьМодально();    

ФормаДок = ВыбДок.ПолучитьФорму();
ФормаДок.ОткрытьМодально();

В диалоге выберите любой регламентированный отчет и... теперь попробуйте его просто увидеть.
...
Рейтинг: 0 / 0
Как программно записать ячейку с именем?
    #36802049
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возьмите в конце концов Радченко "Простые примеры". Вы себе мозг выносите и нам заодно... Закладываете себе неверный базис работы с объектами конфигурации, потом будете ломать
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / [игнор отключен] [закрыт для гостей] / Как программно записать ячейку с именем?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]