|
v7: Имя переменной + Число | ☑ | ||
---|---|---|---|---|
0
Масянька
07.10.11
✎
15:01
|
День добрый!
Подскажите: в макете есть переменные - ИмяП1, ИмяП2, ИмяП3. Как в модуле реализовать: Для счетчик = 1 по Какое-тоЧисло Цикл ИмяП + Счетчик = Какая-тоСтрока; КонецЦикла Спасибо. |
|||
1
DJ Anthon
07.10.11
✎
15:02
|
Шаблон
|
|||
2
DJ Anthon
07.10.11
✎
15:03
|
Шаблон("ИмяП" + Счетчик + "=Какая-тоСТрока");
|
|||
3
Wobland
07.10.11
✎
15:03
|
Выполнить() в семёрке нету?
|
|||
4
izekia
07.10.11
✎
15:03
|
(3) выполнить вроде дороже
|
|||
5
skunk
07.10.11
✎
15:04
|
(2)не взлетит
|
|||
6
Конфигуратор1с
07.10.11
✎
15:05
|
(0) а массив?
|
|||
7
filh
07.10.11
✎
15:06
|
Функцию КомуЧто()
|
|||
8
skunk
07.10.11
✎
15:07
|
функция Присвоить(Чему, Что)
Чему = Что; конецфункции ... ... Значение = "ывываываыва"; Шаблон("Присвоить(ИмяП" + Счетчик ", Значение)"); сообщить(Шаблон("ИмяП" + Счетчик)); |
|||
9
dk
07.10.11
✎
15:07
|
поищи функцию
глприсвоить -- вот ее можно в шаблон засунуть |
|||
10
skunk
07.10.11
✎
15:07
|
Шаблон("Присвоить(ИмяП" + Счетчик + ", Значение)");
|
|||
11
vladko
07.10.11
✎
15:09
|
в 7.7. есть понятие массива. Можно им воспользоваться.
|
|||
12
izekia
07.10.11
✎
15:12
|
(11) настоящие 1С программисты массивом не пользуются
|
|||
13
DJ Anthon
07.10.11
✎
15:18
|
(10) да-да, я просто с набегу
|
|||
14
Cthulhu
07.10.11
✎
15:22
|
(12): очень даже пользуются. когда запросы по ОЛЕ надо, например, зачастую кроме как с использованием глоб.перем.-массивов и не управиться.
|
|||
15
izekia
07.10.11
✎
15:23
|
(14) ну список значений более наглядный и кошерный
|
|||
16
Cthulhu
07.10.11
✎
15:30
|
(15): ты не понял о чем я.
переменная ОЛЕ-контекста при работе через ОЛЕ не теряет присвоенное ей значение только если это элемент глобального массива. ТОЛЬКО. а в запросе, выполняемом в ОЛЕ-контексте, можно использовать только доступные в этом контексте переменные. поэтому в очень многих случаях, когда необходимо выполнение запроса через ОЛЕ, спасает ТОЛЬКО глоб.массив. |
|||
17
izekia
07.10.11
✎
15:32
|
(16) а, ясно
интересно, никогда с этим не сталкивался |
|||
18
Масянька
07.10.11
✎
16:45
|
Сделала:
в модуле: Для Счетчик = 1 По КоличестовПечатныхСтрок Цикл мПеременная = "ДанныеДоверенности" + Строка(Счетчик); мЗначение = СписокДанных.ПолучитьЗначение(Счетчик); Шаблон("[глПрисвоить(мПеременная, мЗначение)]"); КонецЦикла; в глобальнике: как (8) На макете лежат - ДанныеДоверенности1, ДанныеДоверенности2, ДанныеДоверенности3 - выражение Переменная не определена. Чего не так? |
|||
19
filh
07.10.11
✎
16:47
|
КоличестВОПечатныхСтрок
|
|||
20
Масянька
07.10.11
✎
16:48
|
(19) А почему ругается на переменную?
|
|||
21
filh
07.10.11
✎
16:49
|
отладчик что показывает?
|
|||
22
maip1
07.10.11
✎
16:54
|
Определи переменные в начале процедуры: Перем ДанныеДоверенности1, ДанныеДоверенности2, ДаннеДоверенности3.
|
|||
23
Масянька
07.10.11
✎
16:56
|
(22) Зачем?
|
|||
24
Масянька
07.10.11
✎
17:01
|
Люди! Я понимаю, что пятница, но еще только 17 часов....
|
|||
25
Cthulhu
07.10.11
✎
17:01
|
(20): потому что переменная "КоличестовПечатныхСтрок" - не определена. у тебя там в сообщении ещё отметка места возникновения ошибки, возле этой переменной, должна быть.
я фмгею, все же по русски сказано и пальцем показано, ну зачем такие тупые вопросы??? (22): бред. |
|||
26
Cthulhu
07.10.11
✎
17:02
|
(24): это не "только", это - "уже".
|
|||
27
filh
07.10.11
✎
17:02
|
а ну это...
Шаблон("[глПрисвоить("+мПеременная+", мЗначение)]"); |
|||
28
filh
07.10.11
✎
17:03
|
что то сразу то не заметил...
|
|||
29
Масянька
07.10.11
✎
17:05
|
(25) Мне всю процедуру печати нужно привести? Определена "КоличестовПечатныхСтрок". Какие еще?
(27) Написала так. Эффект - такой же. Не ругайтесь. |
|||
30
filh
07.10.11
✎
17:05
|
(25) да, ошибка на это махает, но ошибка по коду шаблона тоже есть.
|
|||
31
filh
07.10.11
✎
17:06
|
(29) в глобальнике: как (8) перенеси с модуль
:) |
|||
32
filh
07.10.11
✎
17:06
|
глобальник то этого не видит...
|
|||
33
Конфигуратор1с
07.10.11
✎
17:07
|
(29) процедуру давайте
|
|||
34
filh
07.10.11
✎
17:07
|
блин, уже 6 минут лишних на работе
:) |
|||
35
Масянька
07.10.11
✎
17:07
|
Сообщить - выводит и мПеременную (как надо), и мЗначение. И тип у обоих - Строка. А не работает.
(30) говорю же, поправила, как ты сказал - все равно не определны. |
|||
36
filh
07.10.11
✎
17:07
|
глПрисвоить в _модуль_ перенеси!!!
|
|||
37
Масянька
07.10.11
✎
17:09
|
Нате:
Процедура Печать(Докум) Перем ПарамШапки; ПечТабл = СоздатьОбъект("Таблица"); // инициализация переменных для печати шапки ФормПарПечШапки(Докум.Фирма, Докум.Контрагент, ПарамШапки); // собственная фирма ПоставщикНаименование = ПарамШапки.Получить("ПоставщикНаименование"); ПоставщикАдрес = ПарамШапки.Получить("ПоставщикАдрес"); ПоставщикТелефоны = ПарамШапки.Получить("ПоставщикТелефоны"); ПоставщикРеквизиты = ПарамШапки.Получить("ПоставщикРеквизиты"); ПоставщикОКПО = ПарамШапки.Получить("ПоставщикОКПО"); ПоставщикКратко = ПоставщикНаименование + ?(ПустоеЗначение(ПоставщикАдрес) = 0, ", " + ПоставщикАдрес, ""); ПоставщикПолностью = ПоставщикКратко + ?(ПустоеЗначение(ПоставщикТелефоны) = 0, ", " + ПоставщикТелефоны, "") + ?(ПустоеЗначение(ПоставщикРеквизиты) = 0, ", " + ПоставщикРеквизиты, ""); // плательщик ПлательщикПолностью = Докум.Контрагент.ПлательщикТН; // грузополучатель ПолучательПолностью = Докум.Контрагент.ГрузополучательТН; ПечДоговор = "Лицензионный договор № " + СокрЛП(Номер) + " от " + Формат(ДатаДоговора,"Д ДДММГГГГ") + " г."; ПечТабл.ВывестиСекцию("Шапка"); // Выводим спецификацию //Для простоты настройки печатной формы примем следующие соглашения: // - высота строк в таблице печатной формы задана жестко, // тогда известно, сколько строк помещается на странице; СтрокНаСтранице = 22; // - высота шапки и подвала задана жестко и кратна высоте строк таблицы, // тогда можно указать, сколько строк занимают шапка и подвал // в пересчете на строки таблицы; СтрокШапки = 10; СтрокПодвала = 9; // - для нормальной работы алгоритма необходимо, чтобы шапка и подвал // могли поместиться на одной странице + хотя бы одна строка таблицы: // СтрокНаСтранице >= СтрокШапки + СтрокПодвала + 1 // - если подвал не помещается на странице, он переносится на другую // страницу с последней строкой; исключение составляет случай, // когда в таблице всего одна строка. НомерСтраницы = 1; КолвоСтрок = Докум.КоличествоСтрок(); Если КолвоСтрок = 1 Тогда ПереноситьПоследнююСтроку = 0; Иначе ЦелыхСтраницСПодвалом = Цел((СтрокШапки + КолвоСтрок + СтрокПодвала) / СтрокНаСтранице); ЦелыхСтраницБезПодвала = Цел((СтрокШапки + КолвоСтрок - 1) / СтрокНаСтранице); ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала; КонецЕсли; // инициализация итогов по странице ИтогоКоличествоНаСтранице = 0; ИтогоСуммаНаСтранице = 0; ИтогоНДСНаСтранице = 0; ИтогоСуммаСНДСНаСтранице = 0; ИтогоНГСМНаСтранице = 0; ИтогоНПНаСтранице = 0; // инициализация итогов по документу ИтогоКоличество = 0; ИтогоСумма = 0; ИтогоНДС = 0; ИтогоСуммаСНДС = 0; ИтогоНГСМ = 0; ИтогоНП = 0; Ном = 0; КурсРублей = глКурсДляВалюты(глРубли, Докум.ДатаДок); ПечТабл.ВывестиСекцию("Заголовок"); Докум.ВыбратьСтроки(); Пока Докум.ПолучитьСтроку() = 1 Цикл Ном = Ном + 1; //Начинаем новую страницу, если предыдущая строка была последней на странице //или пора переносить последнюю строку на последнюю страницу с подвалом. ЦелаяСтраница = (СтрокШапки + Ном - 1) / СтрокНаСтранице; Если (ЦелаяСтраница = Цел(ЦелаяСтраница)) или ((ПереноситьПоследнююСтроку = 1) и (Ном = КолвоСтрок)) Тогда ПечТабл.ВывестиСекцию("ИтогоПоСтранице"); ИтогоКоличествоНаСтранице = 0; ИтогоСуммаНаСтранице = 0; ИтогоНДСНаСтранице = 0; ИтогоСуммаСНДСНаСтранице = 0; ИтогоНГСМНаСтранице = 0; ИтогоНПНаСтранице = 0; ПечТабл.НоваяСтраница(); НомерСтраницы = НомерСтраницы + 1; ПечТабл.ВывестиСекцию("Заголовок"); КонецЕсли; ПечТовар = Докум.Номенклатура; ПечКодТовар = Докум.Номенклатура.Код; ПечЕдиница = Докум.Единица; ПечЦена = Докум.Цена; ПечКоличество = Докум.Количество; КолВо = ?(ПечКоличество=0, 1, ПечКоличество); СуммаПеч = глПересчет(Докум.Сумма , Докум.Валюта, Докум.Курс, глРубли, Докум.ДатаДок); СуммаНДСПеч = глПересчет(Докум.СуммаНДС, Докум.Валюта, Докум.Курс, глРубли, Докум.ДатаДок); СуммаНППеч = глПересчет(Докум.СуммаНП , Докум.Валюта, Докум.Курс, глРубли, Докум.ДатаДок); Если Докум.СуммаВклНП = 1 Тогда СуммаБезНП = СуммаПеч - СуммаНППеч; Иначе СуммаБезНП = СуммаПеч; КонецЕсли; Если Докум.СуммаВклНДС = 1 Тогда СуммаБезНДС = СуммаБезНП - СуммаНДСПеч; СуммаСНДС = СуммаБезНП; Иначе СуммаБезНДС = СуммаБезНП; СуммаСНДС = СуммаБезНП + СуммаНДСПеч; КонецЕсли; ПечНДС = СуммаНДСПеч; Если Докум.УчитыватьНП = 1 Тогда ПечНП = СуммаНППеч; Иначе ПечНП = ""; КонецЕсли; ПечЦена = ?(Докум.Количество <> 0, СуммаБезНДС / Докум.Количество, СуммаБезНДС); // Если цена, указанная в документе в рублях, // без налогов и без скидки // то в печ. форме надо отражть ее. Если ((Докум.УчитыватьНДС = 0) или (Докум.СуммаВклНДС = 0)) и (Докум.СуммаВклНП = 0) и (Докум.Валюта = глРубли) и (Докум.Скидка.Выбран() = 0) Тогда ПечЦена = Докум.Цена; КонецЕсли; ПечТабл.ВывестиСекцию("Строка"); ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице + Докум.Количество; ИтогоСуммаНаСтранице = ИтогоСуммаНаСтранице + СуммаБезНДС; ИтогоНДСНаСтранице = ИтогоНДСНаСтранице + ПечНДС; ИтогоСуммаСНДСНаСтранице = ИтогоСуммаСНДСНаСтранице + СуммаСНДС; Если Докум.УчитыватьНП = 1 Тогда ИтогоНПНаСтранице = ИтогоНПНаСтранице + ПечНП; КонецЕсли; ИтогоКоличество = ИтогоКоличество + Докум.Количество; ИтогоСумма = ИтогоСумма + СуммаБезНДС; ИтогоНДС = ИтогоНДС + ПечНДС; ИтогоСуммаСНДС = ИтогоСуммаСНДС + СуммаСНДС; Если Докум.УчитыватьНП = 1 Тогда ИтогоНП = ИтогоНП + ПечНП; КонецЕсли; КонецЦикла; ПечТабл.ВывестиСекцию("ИтогоПоСтранице"); ПечТабл.ВывестиСекцию("Всего"); // выводим подвал ВсегоОтпущено = "Всего отпущено " + глФразаПрописью(Ном, "наименован"); НаСумму = "на сумму " + глСуммаПрописью(ИтогоСуммаСНДС + ИтогоНП, глРубли); // формируем строку для вывода количества листов накладной // Слово лист склоняется Если (НомерСтраницы > 10) И (НомерСтраницы < 20) Тогда Слово = " листах"; Иначе ПоследняяЦифра = НомерСтраницы % 10; Если ПоследняяЦифра = 1 Тогда Слово = " листе"; Иначе Слово = " листах"; КонецЕсли; КонецЕсли; мНомеров = Докум.КоличествоСтрок(); СтрокаКоличествоНомеров = Формат(мНомеров, "ЧП") + ?(мНомеров = 1, " порядковый номер записи", "порядковых номеров записей"); СтрокаКоличествоЛистов = Строка(НомерСтраницы) + Слово; Руководитель = Докум.Фирма.ЮрЛицо.Руководитель.Получить(Докум.ДатаДок); Если (ПечататьДоверенность = 1) Тогда Если (ПустаяСтрока(Докум.Контрагент.НомерДоверенности) = 0) И (ПустоеЗначение(Докум.Контрагент.ДатаВыдачиДоверенности) = 0) Тогда ПечДанныеДоверенности = СокрЛП(Докум.Контрагент.НомерДоверенности) + " от " + НРег(Формат(Докум.Контрагент.ДатаВыдачиДоверенности," Д ДДММММГГГГ")); КонецЕсли; Если (ПустоеЗначение(Докум.Контрагент.КемВыданаДоверенность) = 0) И (ПустоеЗначение(Докум.Контрагент.КомуВыданаДоверенность) = 0) Тогда Если ПустоеЗначение(Докум.Контрагент.ДолжностьВыданаДоверенность) = 0 Тогда КемКомуВыданаДоверенность = СокрЛП(Докум.Контрагент.КемВыданаДоверенность) + " " + СокрЛП(Докум.Контрагент.ДолжностьВыданаДоверенность) + " " + СокрЛП(Докум.Контрагент.КомуВыданаДоверенность); Иначе КемКомуВыданаДоверенность = СокрЛП(Докум.Контрагент.КемВыданаДоверенность) + " " + СокрЛП(Докум.Контрагент.КомуВыданаДоверенность); КонецЕсли; КонецЕсли; // данные доверенности разбиваем на строки СписокДанных = СоздатьОбъект("СписокЗначений"); СписокДанных = глРазбитьТекстНаСтроки(КемКомуВыданаДоверенность,85); КоличествоПечатныхСтрок = СписокДанных.РазмерСписка(); //ДанныеДоверенности1 = СписокДанных.ПолучитьЗначение(1); //ДанныеДоверенности2 = СписокДанных.ПолучитьЗначение(2); //ДанныеДоверенности3 = СписокДанных.ПолучитьЗначение(3); Для Счетчик = 1 По КоличествоПечатныхСтрок Цикл мПеременная = "ДанныеДоверенности" + Строка(Счетчик); мЗначение = СписокДанных.ПолучитьЗначение(Счетчик); Сообщить("! - " + мПеременная + " = " + мЗначение); Сообщить("1 - " + ТипЗначенияСтр(мПеременная) + " = " + ТипЗначенияСтр(мЗначение)); //м = глПрисвоить(мПеременная, мЗначение); Шаблон("[глПрисвоить(" + мПеременная + ", мЗначение)]"); //Шаблон("[глПрисвоить(" + ("ДанныеДоверенности"+ Строка(Счетчик)) + "," + СписокДанных.ПолучитьЗначение(Счетчик) + ")]"); // ИмяСтроки = "ДанныеДоверенности" + Строка(Счетчик); ////Сообщить("1 - " + ИмяСтроки); // ИмяСтроки = СписокДанных.ПолучитьЗначение(Счетчик); КонецЦикла; //Если СчетчикВывода = 1 Тогда // ДанныеДоверенности1 = СтрокаНаПечать; //ИначеЕсли СчетчикВывода = 2 Тогда // ДанныеДоверенности2 = СтрокаНаПечать; //Иначе // ДанныеДоверенности3 = СтрокаНаПечать; //КонецЕсли; Если ПустаяСтрока(Докум.Контрагент.ПодписьКомуВыданаДоверенность) = 0 Тогда ПечФИОДоверенность = СокрЛП(Докум.Контрагент.ПодписьКомуВыданаДоверенность); КонецЕсли; Если ПустаяСтрока(Докум.Контрагент.ПодписьДолжностьВыданаДоверенность) = 0 Тогда ПечДолжностьДоверенность = СокрЛП(Докум.Контрагент.ПодписьДолжностьВыданаДоверенность); КонецЕсли; КонецЕсли; ПечТабл.ВывестиСекцию("Подвал"); // показать сформированную таблицу Если Устройство = 0 Тогда ПечТабл.Опции(0, 0, 0, 0, "ОпцииПечатиАктаПП", "ОпцииПечатиАктаПП"); ПечТабл.ПараметрыСтраницы(2,100,,10,5,5,5,,,,,); Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда ПечТабл.Защита(1); Иначе ПечТабл.Защита(0); КонецЕсли; ПечТабл.ТолькоПросмотр(1); ПечТабл.Показать(глНазваниеДокументаВжурнале(Докум) + "/Акт ПП",""); Иначе ПечТабл.Опции(0, 0, 0, 0, "ОпцииПечатиАктаПП", "ОпцииПечатиАктаПП"); ПечТабл.ПараметрыСтраницы(2,100,,10,5,5,5,,,,,); ПечТабл.КоличествоЭкземпляров(КолвоКопий); ПечТабл.Напечатать(0); КонецЕсли; КонецПроцедуры // Печать() |
|||
38
Масянька
07.10.11
✎
17:10
|
(36) Перенесла. Индейская изба - вигвам....
|
|||
39
filh
07.10.11
✎
17:11
|
чукча писатель...
все ясно. Удачи! |
|||
40
Конфигуратор1с
07.10.11
✎
17:15
|
(38) на какую переменную ругается?
|
|||
41
filh
07.10.11
✎
17:16
|
||||
42
Масянька
07.10.11
✎
17:20
|
(41) Скачала, спасибо. Ну и что не так?
|
|||
43
Масянька
07.10.11
✎
17:22
|
(40) ДанныеДоверенности1, ДанныеДоверенности2, ДанныеДоверенности3
|
|||
44
Масянька
07.10.11
✎
17:24
|
err глПрисвоить(ДанныеДоверенности1<<?>>, мЗначение)
|
|||
45
Конфигуратор1с
07.10.11
✎
17:25
|
(43) вот нужно и объявить переменные до использования
|
|||
46
Конфигуратор1с
07.10.11
✎
17:25
|
поэтому лучше все таки массив было бы использовать
и без всяких процедур |
|||
47
Масянька
07.10.11
✎
17:27
|
(45) Полярная лисица.... Заработало. Благодарю!
|
|||
48
Конфигуратор1с
07.10.11
✎
17:27
|
Перем ДанныеДоверенности[10];
а в цикле - вместо Для Счетчик = 1 По КоличествоПечатныхСтрок Цикл мПеременная = "ДанныеДоверенности" + Строка(Счетчик); мЗначение = СписокДанных.ПолучитьЗначение(Счетчик); Сообщить("! - " + мПеременная + " = " + мЗначение); Сообщить("1 - " + ТипЗначенияСтр(мПеременная) + " = " + ТипЗначенияСтр(мЗначение)); //м = глПрисвоить(мПеременная, мЗначение); Шаблон("[глПрисвоить(" + мПеременная + ", мЗначение)]"); //Шаблон("[глПрисвоить(" + ("ДанныеДоверенности"+ Строка(Счетчик)) + "," + СписокДанных.ПолучитьЗначение(Счетчик) + ")]"); // ИмяСтроки = "ДанныеДоверенности" + Строка(Счетчик); ////Сообщить("1 - " + ИмяСтроки); // ИмяСтроки = СписокДанных.ПолучитьЗначение(Счетчик); КонецЦикла; Для Счетчик = 1 По КоличествоПечатныхСтрок Цикл ДанныеДоверенности[Счетчик] = СписокДанных.ПолучитьЗначение(Счетчик); Конеццикла; |
|||
49
Масянька
07.10.11
✎
17:28
|
СПАСИБО!!!!!!
|
|||
50
Конфигуратор1с
07.10.11
✎
17:28
|
все равно массив интереснее в плане небольшого количества кода
|
|||
51
Масянька
07.10.11
✎
17:29
|
(39) Сам ты... Индеец :)))
|
|||
52
Конфигуратор1с
07.10.11
✎
17:30
|
(49) та не за что - лучше на фото откройте личико. Как там - Масянька, ну открой личико!
|
|||
53
Масянька
07.10.11
✎
17:31
|
(52) Стоп. А как на макете тогда переменные обозвать?
Еще не готова :))) |
|||
54
Масянька
07.10.11
✎
17:35
|
(52) Сама разобралась. :)))
Как мне нравится :)))) |
|||
55
Конфигуратор1с
07.10.11
✎
17:37
|
(53) а че там готовится? )))
макет - 8шница что ли? |
|||
56
Масянька
07.10.11
✎
17:49
|
(55) Макияж, костюм... :)))
Да, просто и 7, и 8. Мда, в программировании (не 1С) легче... |
|||
57
Конфигуратор1с
07.10.11
✎
17:58
|
(56) та мы и так полюбуемся)))
А какие еще языки знаете? |
|||
58
Масянька
07.10.11
✎
18:05
|
(57) Ангийский - читаю со словарем. Та обойдетесь :)))
|
|||
59
Конфигуратор1с
07.10.11
✎
18:06
|
(58) вот она женская благодарность (((
|
|||
60
Масянька
07.10.11
✎
18:11
|
(59) :)))))))))))))))))))
Как же тогда мужчины благодарят? :)))))))))))))))) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |