Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Как программно записать ячейку с именем? / 25 сообщений из 41, страница 1 из 2
11.08.2010, 17:24
    #36786602
Slav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно записать ячейку с именем?
Добрый день.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо.
...
Рейтинг: 0 / 0
13.08.2010, 10:25
    #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
13.08.2010, 11:58
    #36790333
Slav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно записать ячейку с именем?
RustamZz,

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

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

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

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

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

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

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

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

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


МойДок = Документы.РегламентированныйОтчет.СоздатьДокумент();
МойДок.ИсточникОтчета = "Отчеты.<<ИмяВашегоОтчетаВКонфигурации>>";
МойДок.НаименованиеОтчета = "Отчеты.<<ИмяВашегоОтчетаВКонфигурации>>";
...
Рейтинг: 0 / 0
13.08.2010, 16:55
    #36791293
1C ник
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно записать ячейку с именем?
сам перегрелся, реквизиты регистрами обозвал....
...
Рейтинг: 0 / 0
16.08.2010, 10:05
    #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
17.08.2010, 12:39
    #36795242
Slav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно записать ячейку с именем?
Все оказалось значительно проще.
Так отчет создается и сохраняется:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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