|
v8: Налоговая накладная! Украинская конфигурация (какая .... знает) | ☑ | ||
---|---|---|---|---|
0
Tasechka
25.12.12
✎
13:56
|
1С:Предприятие 8.2 (8.2.16.363)
Конфигурация 1.2.9.1 Нужно перевести номенклатуру в налоговой накладной. Вот что я сделала: У меня есть функция перевода: Функция Перевод (Товар) Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ ПЕРВЫЕ 1 | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Номенклатура", Товар); Результат = Запрос.Выполнить().Выбрать(); Если Результат.Следующий() Тогда Данные = Результат.НаименованиеНоменклатурыКонтрагента; Иначе Сообщить("Заполните регистр сведений"); КонецЕсли; Возврат Данные; КонецФункции //ПереводНоменклатуры Есть регистр сведений, "Номенклатура контрагента" откуда берется перевод. В функцию Печать() я добавила вот такой код: Запрос = Новый Запрос(); Запрос.УстановитьПараметр("Контрагент", Шапка.Контрагент); Запрос.УстановитьПараметр("Номенклатура", СтрокаТаблицы.Номенклатура); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент | И НоменклатураКонтрагентов.Номенклатура = &Номенклатура"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ОбластьМакета.Параметры.Номенклатура = Перевод(СтрокаТаблицы.Номенклатура); Сообщить(СтрокаТаблицы.Номенклатура); КонецЦикла; Посмотрите кому не сложно, что то оно и ошибок не выдает, но и не переводит. Подскажите кому не сложно, пожалуйста. |
|||
1
Галахад
гуру
25.12.12
✎
14:00
|
Жесть какая. Нафига два прохожих запроса?
Причем второй не используется. |
|||
2
zak555
25.12.12
✎
14:00
|
чято такое налоговая накладная ?
|
|||
3
Aleksey
25.12.12
✎
14:01
|
(2) украинские заморочки
|
|||
4
zak555
25.12.12
✎
14:06
|
(3) а чего у неё код тогда не на мове ?
|
|||
5
palpetrovich
25.12.12
✎
14:07
|
"перевести номенклатуру" - это как по русски?
|
|||
6
zak555
25.12.12
✎
14:07
|
(5) видимо перевести на мову
|
|||
7
palpetrovich
25.12.12
✎
14:09
|
(0) что, правда (6)?
|
|||
8
Tasechka
25.12.12
✎
14:10
|
(5) это по русски. Номенклатуру нужно перевести на украинский язык
|
|||
9
palpetrovich
25.12.12
✎
14:13
|
(8) а украинские названия в РС НоменклатураКонтрагентов?
|
|||
10
palpetrovich
25.12.12
✎
14:13
|
+9 кста, а ничего что одна и та-же номенклатура моджет в этом РС быть обюозвана по0разному?
|
|||
11
Tasechka
25.12.12
✎
14:20
|
(9) да) она не будет обозвана по разному
|
|||
12
zak555
25.12.12
✎
14:21
|
учите Русский язык !
|
|||
13
M0narch
25.12.12
✎
14:24
|
посмотри отладчиком что возвращает функция
|
|||
14
palpetrovich
25.12.12
✎
14:29
|
если очень хочется, то можно тупо:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НоменклатураКонтрагентов.Номенклатура, | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов"; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбъектНоменклатура = ВыборкаДетальныеЗаписи.Номенклатура.ПолучитьОбъект(); ОбъектНоменклатура.Наименование = ВыборкаДетальныеЗаписи.НаименованиеНоменклатурыКонтрагента; ОбъектНоменклатура.Записать(); КонецЦикла; условий добавь если надо и копию сделай предварительно. Обязательно! |
|||
15
Tasechka
25.12.12
✎
17:35
|
(14) нет не получается так(((
|
|||
16
palpetrovich
25.12.12
✎
17:56
|
(15) что именно не получается?
|
|||
17
Tasechka
25.12.12
✎
18:04
|
(16) оно все равно выводит номенклатуру на русском
|
|||
18
palpetrovich
25.12.12
✎
18:07
|
(17) ты уверена что в Регистре Сведений - на украинском?
|
|||
19
Tasechka
25.12.12
✎
18:08
|
(18) да
|
|||
20
palpetrovich
25.12.12
✎
18:11
|
(19) и что, код из (14) отрабатывает, не ругается - и все остается так как было?
|
|||
21
Bes1CC
25.12.12
✎
18:14
|
может потому, что в НН полное наименование выводиться?
|
|||
22
palpetrovich
25.12.12
✎
18:17
|
(21) в некоторых конфигурациях даже - НаименованиеДляНН ;)
|
|||
23
Bes1CC
25.12.12
✎
18:21
|
В (0) бухгалтерия, там полное наименование.
|
|||
24
viktor_vv
25.12.12
✎
18:25
|
В бухгалтерии там и регистра сведений номенкдатура контрагентов нету.
У нее скорее всего УТП. И судя по коду в (0) она это не в том месте пытается вставить. То есть дальше наверное идет стандартное заполнение заполнение параметра. |
|||
25
Tasechka
25.12.12
✎
18:41
|
(20) да) все нормально, хоть бы раз споткнулся
|
|||
26
Tasechka
25.12.12
✎
18:43
|
(23) в НН выводится полное наименование
|
|||
27
Tasechka
25.12.12
✎
18:49
|
(24) регистр у меня есть, а вот то что я пытаюсь не туда вставить код, это скорее всего правда(
|
|||
28
viktor_vv
25.12.12
✎
18:51
|
(27) Покажи чуть больше кода до этого фрагмента и после. Только без фанатизма.
|
|||
29
Tasechka
25.12.12
✎
20:00
|
(28)
// Выводим табличную часть ОбластьМакета = Макет.ПолучитьОбласть("РазделI"); ЭтоПерваяСтрока = Истина; // Выведем на печать все строки таблицы в раздел I Для каждого СтрокаТаблицы Из ТаблицаНоменклатуры Цикл Если ЭтоПерваяСтрока Тогда // в первой строке раздела укажем номер раздела ОбластьМакета.Параметры.НомерРаздела = "I"; ЭтоПерваяСтрока = Ложь; Иначе ОбластьМакета.Параметры.НомерРаздела = ""; КонецЕсли; ОбластьМакета.Параметры.Заполнить(СтрокаТаблицы); Если ПечататьКодУКТВЭДБезПробелов Тогда ОбластьМакета.Параметры.КодУКТВЭД = СтрЗаменить(ОбластьМакета.Параметры.КодУКТВЭД, " ", ""); КонецЕсли; Если ЗначениеЗаполнено(СтрокаТаблицы.ТекстДляПечатиВКолонкеКоличество) Тогда ОбластьМакета.Параметры.Количество = СтрокаТаблицы.ТекстДляПечатиВКолонкеКоличество; КонецЕсли; // дата отгрузки/оплаты Если НЕ ЗначениеЗаполнено(СтрокаТаблицы.ДатаОтгрузкиОплаты) Тогда // укажем дату выписки накладной ОбластьМакета.Параметры.ДатаОтгрузкиОплаты = СсылкаНаОбъект.Дата; КонецЕсли; Если НЕ ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура) И Страница = 1 Тогда Сообщить(НСтр("ru='В одной из строк не заполнено наименование номенклатуры - проверьте заполнение документа!';uk='В одному з рядків не заповнене найменування номенклатури - перевірте заповнення документа!'"), СтатусСообщения.Важное); КонецЕсли; //********************************************************************************************************************************** Запрос = Новый Запрос(); Запрос.УстановитьПараметр("Контрагент", Шапка.Контрагент); Запрос.УстановитьПараметр("Номенклатура", СтрокаТаблицы.Номенклатура); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент | И НоменклатураКонтрагентов.Номенклатура = &Номенклатура"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ОбъектНоменклатура = Выборка.Номенклатура.ПолучитьОбъект(); ОбъектНоменклатура.Наименование = Выборка.НаименованиеНоменклатурыКонтрагента; ОбъектНоменклатура.Записать(); //ОбластьМакета.Параметры.Номенклатура = Перевод(СтрокаТаблицы.Номенклатура); //Сообщить(СтрокаТаблицы.Номенклатура); КонецЦикла; //********************************************************************************************************************************** ОбластьМакета.Параметры.Сумма20 = СимволДляПустыхПоказателей; ОбластьМакета.Параметры.Сумма0Укр = СимволДляПустыхПоказателей; ОбластьМакета.Параметры.Сумма0Эксп = СимволДляПустыхПоказателей; ОбластьМакета.Параметры.СуммаБезНДС = СимволДляПустыхПоказателей; // Определим в какую колонку (в зависимости от ставки НДС) попадает сумма без НДС Колонка = "Сумма" + ОпределитьКолонкуТаблицы(СтрокаТаблицы.СтавкаНДС); ОбластьМакета.Параметры[Колонка] = ОбщегоНазначения.ФорматСумм(СтрокаТаблицы.Сумма, ,"0,00"); ТабДокумент.Вывести(ОбластьМакета); |
|||
30
Живой Ископаемый
25.12.12
✎
20:39
|
ну то есть на самом деле ни конфигурация, ни то что она украинская, ни вид документа оказались не важны.. суть просто в том, что копрокод не выполняет возлагавшиеся на него надежды. так?
|
|||
31
viktor_vv
25.12.12
✎
21:26
|
(29) Ну ХЗ. Вроде там.
Ну выведи еще Пока Выборка.Следующий() Цикл ОбъектНоменклатура = //Выборка.Номенклатура.ПолучитьОбъект(); // ОбъектНоменклатура.Наименование = //Выборка.НаименованиеНоменклатурыКонтрагента; // ОбъектНоменклатура.Записать(); //ОбластьМакета.Параметры.Номенклатура = Перевод(СтрокаТаблицы.Номенклатура); Сообщить(""+Выборка.НаименованиеНоменклатурыКонтрагента); |
|||
32
viktor_vv
25.12.12
✎
21:26
|
* // ОбъектНоменклатура = //Выборка.Номенклатура.ПолучитьОбъект();
|
|||
33
J_B
25.12.12
✎
21:35
|
(0) Есть у меня подозрение, что не в той функции Печать() делаются изменения. В типовых для Украины сейчас актуальна ф-я ПечатьДокументаНалоговыйКодекс2012()
|
|||
34
palpetrovich
25.12.12
✎
22:01
|
(29) я таки не понял, тебе чисто в печати подменить надо, справочник Номенклатура не курочить?
|
|||
35
viktor_vv
25.12.12
✎
22:10
|
(33) Судя по наличию в (29)
Если ПечататьКодУКТВЭДБезПробелов Тогда ОбластьМакета.Параметры.КодУКТВЭД = СтрЗаменить(ОбластьМакета.Параметры.КодУКТВЭД, " ", ""); КонецЕсли; таки в той. УКТВЭД выводится именно в ПечатьДокументаНалоговыйКодекс2012() Но в принципе автор давно бы уже отладчиком пробежалась, да нашла бы косяк. |
|||
36
palpetrovich
25.12.12
✎
22:12
|
(35) при печати НН, делать нечто типа "ОбъектНоменклатура.Записать();" - как-бы не православно ;)
|
|||
37
viktor_vv
25.12.12
✎
22:23
|
(36) Ну так это ж она твой код туда вставила из (14), насколько я понял :).
|
|||
38
palpetrovich
25.12.12
✎
22:26
|
(37) дык, нельзя-же так бездумно...
|
|||
39
viktor_vv
25.12.12
✎
22:36
|
(38) Ну ты даешь :). На хворуме написали, значит можно :).
|
|||
40
Tasechka
26.12.12
✎
10:55
|
(34) да, нужно просто подменить запись из регистра, а справочник трогать не нужно
|
|||
41
viktor_vv
26.12.12
✎
11:55
|
(40) ИЗ (31) вставьте код, что выведет ?
|
|||
42
Tasechka
26.12.12
✎
11:57
|
(41) Ошибку выдает:
Обращение к процедуре как к функции (Сообщить) <<?>>Сообщить(""+Выборка.НаименованиеНоменклатурыКонтрагента); |
|||
43
Tasechka
26.12.12
✎
11:59
|
(41) я убрала ОбъектНоменклатура =, ошибок не выдает, но и ничего не выводит
|
|||
44
Конфигуратор1с
26.12.12
✎
12:06
|
а за запрос в цикле автора еще не били?
|
|||
45
palpetrovich
26.12.12
✎
12:08
|
(40) найди строку, закомментируй ее как здесь:
//ОбластьМакета.Параметры.Номенклатура = СокрП("" + СтрокаТаблицы.Номенклатура) + ?(НЕ ЗначениеЗаполнено(СтрокаТаблицы.Характеристика), "", "(" + СтрокаТаблицы.Характеристика +")"); // вместо ее - вставь это: Запрос = Новый Запрос(); Запрос.УстановитьПараметр("Контрагент", Шапка.Контрагент); Запрос.УстановитьПараметр("Номенклатура", СтрокаТаблицы.Номенклатура); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент | И НоменклатураКонтрагентов.Номенклатура = &Номенклатура"; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ТекНоменклатура = Выборка.НаименованиеНоменклатурыКонтрагента; Иначе ТекНоменклатура = СокрП("" + СтрокаТаблицы.Номенклатура); КонецЕсли; ОбластьМакета.Параметры.Номенклатура = ТекНоменклатура + ?(НЕ ЗначениеЗаполнено(СтрокаТаблицы.Характеристика), "", "(" + СтрокаТаблицы.Характеристика +")"); // хотя, лучше конечно сделать один запрос по всем позициям номенклатуры в ТЧ, но и так работать будет :) |
|||
46
palpetrovich
26.12.12
✎
12:08
|
(44) о, и меня побейте :)
|
|||
47
Конфигуратор1с
26.12.12
✎
12:09
|
НУ а если уж гофнокодить то
сие замени на //********************************************************************************************************************************** Запрос = Новый Запрос(); Запрос.УстановитьПараметр("Контрагент", Шапка.Контрагент); Запрос.УстановитьПараметр("Номенклатура", СтрокаТаблицы.Номенклатура); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент | И НоменклатураКонтрагентов.Номенклатура = &Номенклатура"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ОбъектНоменклатура = Выборка.Номенклатура.ПолучитьОбъект(); ОбъектНоменклатура.Наименование = Выборка.НаименованиеНоменклатурыКонтрагента; ОбъектНоменклатура.Записать(); //ОбластьМакета.Параметры.Номенклатура = Перевод(СтрокаТаблицы.Номенклатура); //Сообщить(СтрокаТаблицы.Номенклатура); КонецЦикла; //********************************************************************************************************************************** Запрос = Новый Запрос(); Запрос.УстановитьПараметр("Контрагент", Шапка.Контрагент); Запрос.УстановитьПараметр("Номенклатура", СтрокаТаблицы.Номенклатура); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент | И НоменклатураКонтрагентов.Номенклатура = &Номенклатура"; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() тогда //тут получаем из выборки значение КонецЕсли; |
|||
48
Tasechka
26.12.12
✎
12:12
|
(45) у меня нет такого кода:
ОбластьМакета.Параметры.Номенклатура = СокрП("" + СтрокаТаблицы.Номенклатура) + ?(НЕ ЗначениеЗаполнено(СтрокаТаблицы.Характеристика), "", "(" + СтрокаТаблицы.Характеристика +")"); |
|||
49
palpetrovich
26.12.12
✎
12:13
|
(48) тогда признавайся уже, что у тебя за конфигурация
|
|||
50
viktor_vv
26.12.12
✎
12:13
|
(48) А должен быть.
|
|||
51
Tasechka
26.12.12
✎
12:14
|
"Бухгалтерия для Украины", редакция 1.2.9.1
|
|||
52
Конфигуратор1с
26.12.12
✎
12:15
|
(51)Юная Леди, выложите уже на файлобменник печатную форму шоб злые дядьки не мучались и посмотрели шо к чему
|
|||
53
palpetrovich
26.12.12
✎
12:15
|
(51) а что, в 1.2.9.1 РегистрСведений.НоменклатураКонтрагентов есть? или кто-то дорабатывал?
|
|||
54
Tasechka
26.12.12
✎
12:18
|
(53) дорабатывали
|
|||
55
palpetrovich
26.12.12
✎
12:19
|
(51) ищи тогда:
ОбластьМакета.Параметры.Номенклатура = СокрП("" + СтрокаТаблицы.Номенклатура) + ?(ДополнитьНазваниеНомеромГТД И ЗначениеЗаполнено(СтрокаТаблицы.НомерГТД), ". ВМД №: " + СтрокаТаблицы.НомерГТД + ", дата ВМД: " + Формат(СтрокаТаблицы.ДатаГТД, ?(ПечататьДатыБезРазделителей,"ДФ=ddMMyyyy","ДФ=dd.MM.yyyy")), ""); замени на: Запрос из (45) и ОбластьМакета.Параметры.Номенклатура ТекНоменклатура + ?(ДополнитьНазваниеНомеромГТД И ЗначениеЗаполнено(СтрокаТаблицы.НомерГТД), ". ВМД №: " + СтрокаТаблицы.НомерГТД + ", дата ВМД: " + Формат(СтрокаТаблицы.ДатаГТД, ?(ПечататьДатыБезРазделителей,"ДФ=ddMMyyyy","ДФ=dd.MM.yyyy")), ""); |
|||
56
palpetrovich
26.12.12
✎
12:20
|
+55
ОбластьМакета.Параметры.Номенклатура ТекНоменклатура читать как ОбластьМакета.Параметры.Номенклатура = ТекНоменклатура |
|||
57
Prince
26.12.12
✎
12:20
|
Ребята, а зачем всё ЭТО надо? Не проще добавить ещё одно поле наименования для заполнения на украинском языке и его выводить в Печ.Форму
|
|||
58
Tasechka
26.12.12
✎
12:24
|
||||
59
palpetrovich
26.12.12
✎
12:24
|
(57) проще наверное, но такое ТЗ... :)
|
|||
60
Tasechka
26.12.12
✎
12:25
|
+(58) 17702610
|
|||
61
palpetrovich
26.12.12
✎
12:26
|
(58) бугага
короче, найди строку "ОбластьМакета.Параметры.Номенклатура = " в "Функция ПечатьДокументаНалоговыйКодекс2012(...) и запость сюда |
|||
62
palpetrovich
26.12.12
✎
12:31
|
(58) еще раз бугага! ты что, иэ обработки печатаешь? и все это время молчала?!
|
|||
63
Tasechka
26.12.12
✎
12:35
|
(62) я из внешней печатной формы печатаю
|
|||
64
palpetrovich
26.12.12
✎
12:36
|
(63) предупреждать надо
|
|||
65
Prince
26.12.12
✎
12:37
|
так надо её подключить с параметрами..
|
|||
66
Prince
26.12.12
✎
12:38
|
||||
67
Prince
26.12.12
✎
12:39
|
И вообще...1С не переводчик, а база данных. Это надо сказать руководству а не плясать под их дудку
|
|||
68
palpetrovich
26.12.12
✎
12:54
|
короче так, до строки
Для каждого СтрокаТаблицы Из ТаблицаНоменклатуры Цикл всавляешь код: Запрос = Новый Запрос(); Запрос.УстановитьПараметр("Контрагент", СсылкаНаОбъект.Контрагент); Запрос.УстановитьПараметр("СписокНоменклатура", СсылкаНаОбъект.Товары.ВыгрузитьКолонку("Номенклатура"); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | НоменклатураКонтрагентов.Номенклатура КАК Номенклатура, | НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента КАК НоменклатураКонтрагентов |ИЗ | РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Контрагент = &Контрагент И | НоменклатураКонтрагентов.Номенклатура В Иерархии (&СписокНоменклатура)"; ТЗНоменклатура = Запрос.Выполнить().Выгрузить(); после Если СтрокаТаблицы.Сумма = 0 И СтрокаТаблицы.СуммаНДС = 0 Тогда Продолжить КонецЕсли; вставляешь: НайденнаяСтрока = ТЗНоменклатура.Найти(СтрокаТаблицы.Номенклатура, "Номенклатура"); Если НайденнаяСтрока = Неопределено Тогда ОбластьМакета.Параметры.Номенклатура = СокрЛП(СтрокаТаблицы.Номенклатура); Иначе ОбластьМакета.Параметры.Номенклатура = НайденнаяСтрока.НоменклатураКонтрагентов; КонецЕсли; |
|||
69
Tasechka
26.12.12
✎
13:16
|
(68) неа(( все равно выводит старое название((
Я тут немного порылась, здесь есть функция ПодготовитьТаблицы, там есть такая строчка: СтруктураПолей.Вставить("Номенклатура" , "Номенклатура.НаименованиеПолное");, может здесь нужно вставлять запрос? или я опять туплю( |
|||
70
palpetrovich
26.12.12
✎
13:40
|
(69) в общем так, без твоей конфигурации я не вижу как тебе помочь. если хочешь - выложи CF-шник в файлообменник
|
|||
71
Prince
26.12.12
✎
16:27
|
"СтруктураПолей.Вставить("Номенклатура" , "Номенклатура.НаименованиеПолное""-правильно, ты же полное наименование переводишь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |