Имя: Пароль:
1C
1C 7.7
v7: Добавить сроки в ТЗ
,
0 MixanM
 
23.12.11
10:12
не моуг понять как работать с ТЗ, вообщем считали 2 строки одной(!) номенклатуры, в первой строке хринтся код, название, цена розн,
во второй : код, название, цена ЗАКУП(!). Имеется ТЗ(ТаблицаЗНачений), в ней в одной строке должно быть , код, название, цена закуп, цена розн, сделал так:
стр= ТЗ.ТекущаяСтрока();
                   Если ТЗ.ТекущаяСтрока() = 0 Тогда
                       ТЗ.НоваяСтрока();
                       Тз.Номенклатура = Спр.ТекущийЭлемент();
                       ТЗ.СтараяРозн =  СтараяРоз;
                       ТЗ.НоваяРозн = НоваяРоз;
                       ТЗ.СтараяЗак = СтараяЗак;
                       ТЗ.НоваяЗак = НоваяЗак
                   Иначе
                       Если тз.НайтиЗначение(Спр.ТекущийЭлемент(),стр - 1,"Номенклатура") = 0 тогда
                           ТЗ.НоваяСтрока();
                           Тз.Номенклатура = Спр.ТекущийЭлемент();
                           ТЗ.СтараяРозн =  СтараяРоз;
                           ТЗ.НоваяРозн = НоваяРоз;
                           ТЗ.СтараяЗак = СтараяЗак;
                           ТЗ.НоваяЗак = НоваяЗак;
                       Иначе
                           ТЗ.ТекущаяСтрока();
                           ТЗ.СтараяРозн =  СтараяРоз;
                           ТЗ.НоваяРозн = НоваяРоз;
                           ТЗ.СтараяЗак = СтараяЗак;
                           ТЗ.НоваяЗак = НоваяЗак;
                       КонецЕсли;
                   КонецЕсли;

Но адинэс добавляет по 2 номенклатуры, соотвесвенно с  ценой роз, и вторая строка, цена закуп. воть
1 andrewks
 
23.12.11
10:17
нифига не понял, что тебе надо.

попробую полетепатировать:

в строчке
Если тз.НайтиЗначение(Спр.ТекущийЭлемент(),стр - 1,"Номенклатура") = 0 тогда

ты ищешь значение ТОЛЬКО по ОДНОЙ строке с № = стр-1

стр="";
Если тз.НайтиЗначение(Спр.ТекущийЭлемент(),стр,"Номенклатура") = 0 тогда
ТЗ.НоваяСтрока();
иначе
ТЗ.ПолучитьСтрокуПоНомеру(стр);
КонецЕсли;
2 KRV
 
23.12.11
10:17
Непонятно, но здорово..
3 Злопчинский
 
23.12.11
10:17
автор ты просто бесподобный дятел.
ТЗ.НоваяКолонка("Код","Строка")
ТЗ.НоваяКолонка("Наименование","Строка")
ТЗ.НоваяКолонка("ЦенаЗакуп","Число")
ТЗ.НоваяКолонка("ЦенаРозн","Число")
.
Если Что-то1
ТЗ.НоваяСтрка();
ТЗ.Код = Спр.Код;
ТЗ.Наименование = Спр.Наименование;
ТЗ.ЦенаЗакпу = Спр.ЦенаЗакуп;
КонецЕсли;

Если Что-то2
ТЗ.НоваяСтрка();
ТЗ.Код = Спр.Код;
ТЗ.Наименование = Спр.Наименование;
ТЗ.ЦенаРозн = Спр.ЦенаЗакуп;
КонецЕсли;

ТЗ.Свернуть("Код,Наименование","ЦенаРозн,ЦенаЗакуп");
4 MixanM
 
23.12.11
10:19
(2) могу остыпать, дело в том , что я ищу не в одной строке, там по цмклу все делается, это уже находится внутри цикла, так что там для каждого новог элемента, сия конструкиця будет вызываться
(3) не согласен, сегодня магнитные бури что ли, голова и мотор чего то болят
5 shegy
 
23.12.11
10:23
(3) Вот, что за привычка хамить людям, это я не только "Злопчинский" говорю, человек пришел на форум, что бы ему помочь, а тут на тебе.
Автор, можно по подробней, что ты хочешь сделать?
6 Ёпрст
 
23.12.11
10:24
(3) Чебур, ну хоть ты бы не учил плохому!

Во первый, код и наименование, заместо ссылки - моветон,
во-вторых суммировать цену - бред!.
7 Злопчинский
 
23.12.11
10:25
(4) простой совет: прежде чем топтать клаву - просто думай что хочешь сделать. не КАК, а ЧТО - а то у тебя руки поперед мозгов работают - по коду видно
8 Злопчинский
 
23.12.11
10:26
(5) да, вот такие злобные люди
9 MixanM
 
23.12.11
10:28
я же добродушный, да и я на товарисчей старше меня не обижаюсь, да и он сам фигню какую то написал
(5) вообщем у меня загружается номенклатура из файла, в файле может быть одна и та же номенклатура на двух строчках, это из за того что тип цены у номенклатуры разный. Так вот, мне нужно номенклатуру загрузить в одну строчку, и с разным типом цен, т.е наапример вот так вот номенклатура:
1;BINGON антинакипин 500гр+500гр;Б0008436;0;8690536920587;шт;Без НДС;0;118.3;руб.;Закупочные;СМС;;;
1;BINGON антинакипин 500гр+500гр;Б0008436;0;8690536920587;шт;Без НДС;0;142;руб.;Розничные;СМС;;;
мне нужно привести ее к виду,
Наименование                             цена заакуп           цена розн
1;BINGON антинакипин 500гр+500гр;        118                        142

вот как то так,
а уменя получается так :
Наименование                             цена заакуп           цена розн
1;BINGON антинакипин 500гр+500гр;                                142
2;BINGON антинакипин 500гр+500гр;          118
10 Злопчинский
 
23.12.11
10:28
(6) заместо ссылки - тут без вопросов. но вот челу нужен код и наименование - нате.
.
а насчет суммировать цену - тут от задачи зависит и вполне м.б. допустимо и соображение что код-наименование в рамках ТЗ не встречаются больше двух раз и цены в строках - упоминаются по 1 разу - вполне нормально... ;-) хотя так как автор пишет - хз что у него там, а приведенный в примере - то что в (0) запросили - 2 строки в ТЗ, в однйо ценаРозн, вдругой ЦенаЗакуп, свернутся нормально... ;-)
11 Злопчинский
 
23.12.11
10:29
(9) в (3) - написано!
12 Злопчинский
 
23.12.11
10:30
читаешь файл ПОДРЯД.
строки в ТЗ ПИШЕШЬ ПОДРЯД!!! без всяких поисков!!!!!!
сворачиваешь ТЗ как в (3) все.
13 Морозов Александр
 
23.12.11
10:30
(11) че получится с ценой при свертывании?
14 MixanM
 
23.12.11
10:31
код приведенный в (0), находиться в цикле перебора строк номенклатуры, поэтому он каждый раз создает новую строку для вновь найденного элемента, отака куйня
15 MixanM
 
23.12.11
10:31
(12) вроде понял, 5 сек, счас воплотим
16 Злопчинский
 
23.12.11
10:31
и только после того как свернул ТЗ - работай уже со справочником что тебе надо.. делай ПОСЛЕДОВАТЕЛЬНО ПРОСТЫЕ ВЕЩИ.
.
первая простая: ПРОЧИТАТЬ ДАННЫЕ
вторая простая: ГРУЗИТЬ/СИНХРОНИЗОВАТЬ прочитанное...
17 shegy
 
23.12.11
10:32
(9) Если я правильно понял, у тебя есть центральная база, из которой ты выгружаешь справочник в txt, после чего пытаешся загрузить не достающий товар во вторую базу и там тебе надо проверить, если есть товар грузить не будем, либо грузим только изменения, ну а если его нет, тогда грузим все подрят, так?
18 Морозов Александр
 
23.12.11
10:34
из (3) сработает если в файле точно нет одинакового товара с двумя разными, например закупочными ценами
19 MixanM
 
23.12.11
10:36
(17) нет, выгружается номенкалтура, там ее данные(код, название, данные из подчиненных справочников), и сейчас нужно загрузить ее в документ. Вот я подумл что можно загрузить нужные данные в тз, а  тз уже выгрузить в документ
20 Злопчинский
 
23.12.11
10:37
(18) по барабану.- вылезет цена в два раза больше ;-) если это критично - ошибку обнаружат, если нет - то это не ошибка.
.
в ТЗ добавить "Счетчик", при добавлении строк устанавливать в 1. Счетчик - в суммируемые реквизиты при свертке. При обходе свернутой таблицы - если счетчик > 2 - абнормал
21 shegy
 
23.12.11
10:38
(19) я просто понять не могу зачем в ТЗ все загонять, не проще ли напрямую все писать из txt
22 Эльниньо
 
23.12.11
10:38
А может таки номинацию "Клюв года 2011" замутить?
23 shegy
 
23.12.11
10:39
(19) расскажи еще, а что за чудо документ, где одна и таже номенклатура, но с разным ТИПОМ цен?
24 MixanM
 
23.12.11
10:42
(23) лучше не знать ))), имхо залупа какаято, вообщем сделал так, заробил :
стр= 0;
                   Если тз.НайтиЗначение(Спр.ТекущийЭлемент(),стр,"Номенклатура") = 0 тогда
                       ТЗ.НоваяСтрока();
                       Тз.Номенклатура = Спр.ТекущийЭлемент();
                       ТЗ.СтараяРозн =  СтараяРоз;
                       ТЗ.НоваяРозн = НоваяРоз;
                       ТЗ.СтараяЗак = СтараяЗак;
                       ТЗ.НоваяЗак = НоваяЗак;
                   Иначе
                       ТЗ.ТекущаяСтрока();
                       ТЗ.СтараяРозн =  СтараяРоз;
                       ТЗ.НоваяРозн = НоваяРоз;
                       ТЗ.СтараяЗак = СтараяЗак;
                       ТЗ.НоваяЗак = НоваяЗак;
                   КонецЕсли;
25 MixanM
 
23.12.11
10:42
(22) чур мне первое место
26 Морозов Александр
 
23.12.11
10:45
уж тогда ТЗ.ТекущаяСтрока(стр)
27 MixanM
 
23.12.11
10:47
(23) документ для "посадили очередную ТП - любовницу, и для придания ей рабочего вида надо написать обработку, цитирую : "вкоторойонабудетвидетьизменяемуюцену"
28 MixanM
 
23.12.11
10:48
что это, и кому даст, ведомо токма Ктулху
29 Злопчинский
 
23.12.11
10:51
(24) ну и нахрена ты эту херню напсал?
30 Злопчинский
 
23.12.11
10:55
ТЗ.НоваяКолонка("Код","Строка")
ТЗ.НоваяКолонка("Наименование","Строка")
ТЗ.НоваяКолонка("ЦенаЗакуп","Число")
ТЗ.НоваяКолонка("ЦенаРозн","Число")
.
//здесь получить и разобрать на строки запись из файла
.
Если стрТипЦеныИзФайла="Закупочная"
Тогда
ТЗ.НоваяСтрка();
ТЗ.Код = стрКод;
ТЗ.Наименование = стрНаименование;
ТЗ.ЦенаЗакуп = число(стрЦенаЗакуп);
КонецЕсли;

Если стрТипЦеныИзФайла="Розничная"
Тогда
ТЗ.НоваяСтрка();
ТЗ.Код = стрКод;
ТЗ.Наименование = стрНаименование;
ТЗ.ЦенаРозн = число(стрЦенаРозн);
КонецЕсли;

ТЗ.Свернуть("Код,Наименование","ЦенаЗакуп,ЦенаРозн");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1
Цикл
 //делаем что надо
КонецЦикла;
31 155153144627
 
23.12.11
10:58
(23)
ТЗ.НоваяКолонка("Номенклатура")
ТЗ.НоваяКолонка("СтараяРоз")
ТЗ.НоваяКолонка("НоваяРоз")
ТЗ.НоваяКолонка("СтараяЗак")
ТЗ.НоваяКолонка("НоваяЗак")
Цикл
ТЗ.НоваяСтрока();
Тз.Номенклатура = Спр.ТекущийЭлемент();
ТЗ.СтараяРозн =  СтараяРоз;
ТЗ.НоваяРозн = НоваяРоз;
ТЗ.СтараяЗак = СтараяЗак;
ТЗ.НоваяЗак = НоваяЗак;
КонецЦикла;

ТЗ.Свернуть("Номенклатура","СтараяРоз,НоваяРоз,СтараяЗак,НоваяЗак");
32 shegy
 
23.12.11
10:59
еще бы дату и пользователя, который менял цену добавить, а то смысл?
33 155153144627
 
23.12.11
11:02
(24)
и если уж так хочеться по своему сделать, то делай так:

стр= 0;
                   Если тз.НайтиЗначение(Спр.ТекущийЭлемент(),стр,"Номенклатура") = 0 тогда
                       ТЗ.НоваяСтрока();
                       Тз.Номенклатура = Спр.ТекущийЭлемент();
                       ТЗ.СтараяРозн =  СтараяРоз;
                       ТЗ.НоваяРозн = НоваяРоз;
                       ТЗ.СтараяЗак = СтараяЗак;
                       ТЗ.НоваяЗак = НоваяЗак;
                   Иначе
                       ТЗ.УстановитьЗначение(Стр,"СтараяРозн",СтараяРоз);
                       ТЗ.УстановитьЗначение(Стр,"НоваяРоз",НоваяРоз);
                       ТЗ.УстановитьЗначение(Стр,"СтараяЗак",СтараяЗак);
                       ТЗ.УстановитьЗначение(Стр,"НоваяЗак",НоваяЗак);
                   КонецЕсли;
34 shegy
 
23.12.11
11:04
(27) т.е. если поставщик сказал, что через неделю будет повышение, ТП села забила ручками все изменения (или, если ты обработку доработаешь, загружается изменения из прайса поставщика) и проводится
35 MixanM
 
23.12.11
11:05
(32) а я в модуле документа написал, дату и время изменения\загрузки
36 MixanM
 
23.12.11
11:07
(34) на данном этапе, ели поизошло повышение, то оператор завбивает в ручную, я ей эту обрабюотку тоже запилил, дабы не шибко мучилась, а с поставщиками все только по телейону, адъ и израиль тащемта, сегодня с ними свзался, дабы привести к единому виду электронный документооборот, такое ощущение что в бизнесе происходит диверсификация, никому ничего не нужно, и все работают как в 90х годах - в ручную
37 MixanM
 
23.12.11
11:08
(33) сделал по вашему, не знаю чем и кк это поможет(т.к. и так работает), но спасибо.
38 shegy
 
23.12.11
11:09
(36) т.е. при загрузке база идентифицирует товар по наименованию, а наименование поставщика, так?
39 MixanM
 
23.12.11
11:11
кстати, возможно ли , при открытом элементе справочника, выполнить вот такой вот код :
Спр.УстановитьНовыйКод("Ц");
т.е. произойдет ил генерация кода? или т.к. он открыт ничего не произойдет?
40 MixanM
 
23.12.11
11:15
(38) здесь сделано се через документ, в документе выбирается элемент, у кот меняется цена, у элемента меняется цена, документ проводится. насчет поставщика, идентификации нет, т.е. отгрузка происходит в каждый маг. и там уже местный оператор , создает в ручную СФ в ней набиает позиции, и его провдит, а цена приходит от оператора кот. сидит в центральном офисе, как то так
41 MixanM
 
23.12.11
11:20
(38) т.е схема такова, дабы никого не запутать :
-поставщик сообщил о повышении товара на завтра на некоторые позиции\либо не сообщая отгрузил уже по измененной цене
- в магазинепринимают товар, заводят ручками СФ, забивают туда позиции, если нали расхождение в ценах по бумажной СФ поставщика и нашей БД,  сообщают что к ним пришел товар по измененной цене и скидывают список товара (методом контролцэ\контролвэ)
- оператор в центр.фоисе получает список измененных цен, и создает документ "ценоизменение", в нем набивает номенклатуру с измененной ценной, меняет у оной цену (закуп, т.к.розница высчитвается сама), и проводит док,
- ночью, происходит обмен БД  : база-магазин, и этот документ приходит в  базу одинэс магазина,  и меняет цену.
вот такой вот пушистый полярный лис
42 155153144627
 
23.12.11
11:21
(39)
Если код был 12, а элементов было 39, то код будет "Ц40".
И про Спр.Записать(); не забудь.

Если просто надо добавть букву, то так

Спр.Код = "Ц"+Спр.Код;
Спр.Записать();

Код у справочника должен быть текстовый.
43 Злопчинский
 
23.12.11
11:23
ага, и псоле Ц99, будет Ц10 с сообщением о неуникальносити
44 MixanM
 
23.12.11
11:26
(42)(43) нужно просто сгенерировать новый код у открытого элемента справочника, т.е. открыта номенклатура, при нажатии на волшебую кнопу, БД подключилась ко второй БД, посмотрела там код, нашла соотвествующий, сказала юзеру что там ткой имеется и перегенерировала новый код
45 Сияющий Асинхраль
 
23.12.11
11:27
(44) Ау... Тебе еще в (3) показали как такие вещи делаются, а ты ветку уже до полусотни постов довел. Учись делать таки правильно и КРАСИВО, а не как попало...
46 Злопчинский
 
23.12.11
11:29
не надо открывать элемент справочника, да еще интерактивно.. хрень у тебя какая-то полная
47 155153144627
 
23.12.11
11:30
(44) Чего ты там ваяешь, если ночью делается обмен, по зачем составление списков изменившихся цен в экселе, отправка на базу?
Из подчиненной в основную базу будешь заглядывать? :-)
48 MixanM
 
23.12.11
11:31
(45) так це уже другой вопрос. (
(46) так в том то и дело что волшебная кнопка по проверке, находится на форме элемента справочника
49 MixanM
 
23.12.11
11:32
(47) я не про обмен говрю, а например, когда завоят новую номенклатуру в одной базе, она подключается и смотрит, что бы с таким кодом не существовало элемента во второй базе
50 MixanM
 
23.12.11
11:34
(47) и вообще обмен происхдит только документов, а справочникик и проч - не синхронизируются, вот такой вот обмен
51 Сияющий Асинхраль
 
23.12.11
11:36
(48) Это сейчас для тебя должно быть главным вопросом, судя по вопросам ты только начинаешь, как научишься сейчас, так и в дальнейшем программить будешь. Привыкнешь к гoвн&&&kоду, который сейчас написать стараешься, так и будешь в дальнейшем писать гoвн&&&kод даже в больших проектах...
52 MixanM
 
23.12.11
11:47
(51) Другой вопрос не в сысле "другой вопрос", а в том смысле что с первым вопросом мне помогли, и сделал я как в (3)частично, и я задал уже другой вопрос
53 shegy
 
23.12.11
12:05
так а чем мишает в процедуре ВводНового() прописать, УстановитьНовыйКод(), после чего проверяешь, если в старой базе нет НовыйКод, тогда оставляем все как есть, а ежли есть, дальше на что фантазии хватит
54 medved_kot
 
23.12.11
13:15
Если ТЗ.НайтиЗначение(Спр.ТекущийЭлемент(),стр,"Номенклатура") = 0 тогда
 ТЗ.НоваяСтрока();
КонецЕсли;
ТЗ.СтараяРозн =  СтараяРоз;
ТЗ.НоваяРозн = НоваяРоз;
ТЗ.СтараяЗак = СтараяЗак;
ТЗ.НоваяЗак = НоваяЗак;
55 1Сергей
 
23.12.11
13:18
почему нельзя хранить в одной строке две цены?
56 Ковычки
 
23.12.11
13:19
нифига не понял
57 shegy
 
23.12.11
13:31
(55) вот и я об этом хотел сказать
58 MixanM
 
23.12.11
13:44
(55) особенность допила адинэс другими программерами
AdBlock убивает бесплатный контент. 1Сергей