Имя: Пароль:
1C
1С v8
Всем доброго времени суток. Прошу помочь с тестовым заданием !
,
0 semen20192019
 
26.02.19
12:14
Я начинающий программист! Прошу помощи у добрых людей !

Доработка конфигурации 1С Бухгалтерия 3.0

Изменить логику заполнения аналитики загружаемых из Клиент-банка документов «СписаниеСРасчетногоСчета», основываясь на «ключевой фразе» из Назначения платежа.

Аналитика: «Подразделение», «Счет БУ», «Субконто1», «Субконто2», «Субконто3».
Вид операции – всегда «Прочее списание».
Пользователь заранее вносит в учетную систему информацию о ключевых фразах и той аналитике, которая должна заполниться в документе при загрузке.
Ключевая фраза может встречаться в любой части назначения платежа.
Пример:

НазначениеПлатежа= «Комиссия за ПП/ПТ. Без НДС»
Ключевое слово «Комиссия»,
Аналитика:
Вид операции: «Прочее списание»
Подразделение: «ЧЛБ» (Элемент справочника ПодразделениеОрганизации)
Счет БУ – «91.02»
Субконто1 – «Расходы на услуги банков» (Элемент справочника ПрочиеДоходыИРасходы)
1 Fragster
 
гуру
26.02.19
12:17
10круб
2 Buster007
 
26.02.19
12:17
СтрНайти
3 PR
 
26.02.19
12:21
Рукалицо
4 semen20192019
 
26.02.19
12:30
(3) Это тестовое задание,как сказали там работы на 3 часа. Может кто нибудь логику решения данной задачи подсказать?
5 semen20192019
 
26.02.19
12:32
(3) PR, я же написал, что НАЧИНАЮЩИЙ, при всем уважении к Вам, такие комментарии в данном случае я считаю неуместными.
6 Kigo_Kigo
 
26.02.19
12:32
(4) -> (2)
7 sqr4
 
26.02.19
12:38
(0) Куда устраиваешься?
8 semen20192019
 
26.02.19
12:40
(6) (2) Спасибо за подсказку. А как мне потом свои данные подставить в документ?
9 Вафель
 
26.02.19
12:40
рано тебе еще начит на эту работу идти
10 Вафель
 
26.02.19
12:42
иначе как же ты будешь обычные задания делать?
или на мисту будешь каждый раз выкладывать.
-Люди добрые, помогите. Дали задание - не могу решить.
А кушать очень хочется
11 Mikeware
 
26.02.19
12:42
(4) логика описана в задании: "ЕСЛИ нашли ключевую фразу ТОГДА заполняем сооветсвующие аналитики"
12 catena
 
26.02.19
12:44
(10)Ну, у Ливингстара успешно выходит
13 Вафель
 
26.02.19
12:44
тут нужно волю эмансипировать вначале
14 Kigo_Kigo
 
26.02.19
12:45
Если СтрНайти(НазначениеПлатежа,"Комиссия") Тогда
//Заполняем реквизиты документа
КонецЕсли

И так далее
15 sqr4
 
26.02.19
12:49
Если СтрНайти(НРег(НазначениеПлатежа),"комиссия") Тогда
//Заполняем реквизиты документа

КонецЕсли
16 ReaLg
 
26.02.19
12:50
Конфигурацию менять можно?

"Пользователь заранее вносит в учетную систему информацию о ключевых фразах и той аналитике, которая должна заполниться в документе при загрузке."

Регистр сведений надо...
17 unregistered
 
26.02.19
12:50
(14)(!5) Топорное решение "в лоб", как у чукчу - что вижу то и пишу. За такое решение у нас кандидат зачет точно не получил бы.

Впрочем автору ветки не под силу даже такое решение.
18 semen20192019
 
26.02.19
12:52
(16)Конфу менять можно. Я создал РС вида: Измерение - "Ключевые фразы", Ресурсы - "Подразделение", "Субконто1". Создал записи. Получается мне сейчас надо каким то образом сделать отбор записей в регистре по ключевой фразе из Назначения платежа.
19 aleks_default
 
26.02.19
12:53
(17)А тут может быть какое-то мегагениальное решение?
20 sqr4
 
26.02.19
12:54
(17) Задело, обяснись!!!
21 sqr4
 
26.02.19
12:54
(17) НА шпагах или пистолетах?
22 Вафель
 
26.02.19
12:55
(18) нужно пройтись по всем записям. та что подошла - ее и использовать
23 sqr4
 
26.02.19
12:55
(18) Наоборот, искать ключевые фразы в назначении платежа
24 aleks_default
 
26.02.19
12:56
(21)Секундант нужен?
25 ReaLg
 
26.02.19
12:57
(18) Тебе в назначении платежа нужно искать фразы из регистра сведений. Если подходит - то ты нашел нужную строку РС.

Только продумай, что у тебя должно быть, если пользователь укажет фразы, например, "комиссия" и "комиссия банка" с разной аналитикой. В назначении будет "комиссия банка"...
26 aleks_default
 
26.02.19
12:57
Одно непонятно, что тут три часа делать?
27 Kigo_Kigo
 
26.02.19
12:57
(17) Это не топрное решение в лоб, это Пример, а как он его будет использовать, что подставлять и как обрабатывает, пусть сам думает
(21) Забей, он просто пример принял буквально за решение
28 sqr4
 
26.02.19
12:59
(27) >>он просто пример принял буквально за решение
Не разобравшись осудил!!! У меня так сосед в больницу попал)))
29 PR
 
26.02.19
13:02
(5) А я считаю неуместным обращаться за помощью в решении _тестового_, блеать, задания
Это же тест, а не реальная задача
Какой это тест _твоих_ способностей, если решит Вася с Мисты?
30 semen20192019
 
26.02.19
13:08
(29) Я прошу ПОДСКАЗАТЬ, а не решить за меня задачу !!! Если нет желания помочь каким - либо дельным советом мог бы и не флудить.
31 Kigo_Kigo
 
26.02.19
13:09
(29) Иногда достаточно щелбана в нужном направлении,что бы понять в какую сторону работать, а вы сразу сами гуру стали?
32 Вафель
 
26.02.19
13:12
(30) уже все подсказали
33 Вася Теркин
 
26.02.19
13:15
(29) Кто меня зовет?
34 Натуральный Йог
 
26.02.19
13:17
Ник Сперма, Зарегистрирован сегодня, тупой вопрос. Диагноз: тролль
35 OldCondom
 
26.02.19
13:19
В чем подсказать то? Тут самое сложнле - это заполнить субконто.
36 OldCondom
 
26.02.19
13:20
(34) а, точно:(
37 Мимохожий Однако
 
26.02.19
13:23
(30) Показывай, что уже получилось. Народ подскажет. Тренируй терпение )
38 catena
 
26.02.19
13:30
(30)https://www.forum.mista.ru/rules.php
Чётко сформулируйте свой вопрос.
Тема должна отражать суть сообщения. Не допускаются темы типа "Подскажите", "1С", "help", "есть вопрос", "не получается", темы большими буквами, заголовки с кучей восклицательных/вопросительных знаков.
Не ставьте "общих" вопросов. Если Вы даже не знаете, как подступиться к задаче, все равно скажите, какие у Вас есть идеи.
39 semen20192019
 
26.02.19
13:33
(37) Дополняю вот эту процедуру в модуле формы обработки "КлиентБанк":
&НаСервере
Процедура ЗаполнитьДокументыКИмпортуПоРаспознаннымДаннымИзБанка(ДокументыКИмпорту, РаспознанныеДанныеИзБанка, ВыводитьСообщения);

Я выполнил запрос из своего РС:

"ВЫБРАТЬ
Доп_НастройкиКлиентБанк.КлючевыеФразы
ИЗ
РегистрСведений.Доп_НастройкиКлиентБанк КАК Доп_НастройкиКлиентБанк";

Далее Хочу найти свое ключевое слово:

Фразы = Запрос.Выполнить().Выбрать();
Платеж = СтрНайти(Фразы,СтрокаТаблицы.НазначениеПлатежа);

Если Платеж Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Нашлась запись !!!";
Сообщение.Сообщить();
КонецЕсли;

Ничего пока не срабатывает, буду искать решение дальше.
40 Krendel
 
26.02.19
13:34
(7) В бит скорее всего ;-)
41 Krendel
 
26.02.19
13:36
(30) уанэслансер, стоимость около 500 рублей, больше не плати
42 sqr4
 
26.02.19
13:36
Пишу бесплатно разработки для 1С Управление торговлей
Правда тут только по УТ бесплатно помогают, но может, он и на БП согласится)))
43 sqr4
 
26.02.19
13:37
Тем более постановка у тебя уже есть, а это 70% работы)
44 semen20192019
 
26.02.19
13:38
(43) Спасибо конечно, но я лучше набью свои шишки и получу ценный опыт)
45 sqr4
 
26.02.19
13:39
Платеж = СтрНайти(Фразы,СтрокаТаблицы.НазначениеПлатежа);

Если Платеж Тогда
46 sqr4
 
26.02.19
13:39
Тут мне не нравится
47 catena
 
26.02.19
13:41
(46)Т.е. с выборкой все нормально по-вашему?
48 Мимохожий Однако
 
26.02.19
13:42
(44) Научись включать отладчик, читать СП. Запусти свою заготовку и смотри, где не получилось.ОК?
49 sqr4
 
26.02.19
13:43
(47) там тоже все плохо( а я и не увидел
50 catena
 
26.02.19
13:43
(39)Нужно почитать хотя бы СП. Хотя бы про выборку из результата запроса, про СтрНайти, про оперторы языка запросов...
51 semen20192019
 
26.02.19
13:45
(47) (48) (49) (50) Пока выборка.следющий()
Об этом идет речь?
52 Mikeware
 
26.02.19
13:51
(0)а вообще, что ты хочешь от этой ветки? зачем ты ее создал? цель какая? (я серьезно спрашиваю, без стеба).
53 semen20192019
 
26.02.19
13:55
(52) Я прошу добрых и опытных людей подсказать куда в каком направлении копать, т.к. я с такими задачами не сталкивался. Подсказали несколько вариантов, сейчас сижу сам пробую что да как.
54 semen20192019
 
26.02.19
14:00
Вот в таком варианте сработало.

Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
                           |    Доп_НастройкиКлиентБанк.КлючевыеФразы
                           |ИЗ
                           |    РегистрСведений.Доп_НастройкиКлиентБанк КАК Доп_НастройкиКлиентБанк";
            Фразы = Запрос.Выполнить().Выбрать();
            Пока Фразы.Следующий() Цикл
            Платеж = Нрег(СтрНайти(СтрокаТаблицы.НазначениеПлатежа,Фразы));
            Если Платеж = "1" Тогда
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Нашлась запись !!!";
            Сообщение.Сообщить();
            КонецЕсли;
            КонецЦикла;
55 sqr4
 
26.02.19
14:04
ИЗ сп
Пример:

Если СтрНайти(Сотрудник.Имя, "Сергей") > 0 Тогда
    Сообщить(Сотрудник.Имя + " таб. №" + Сотрудник.Код);
КонецЕсли;
56 Йохохо
 
26.02.19
14:09
(54) "Нрег(СтрНайти" это фиаско, братан
57 semen20192019
 
26.02.19
14:12
(55) Я читал, но мне нужно чтобы вторым параметром не я задавал какое либо значение строки, а чтобы это значение подставлялось из переменной СтрокаТаблицы.НазначениеПлатежа.
В варианте : Если Нрег(СтрНайти(СтрокаТаблицы.НазначениеПлатежа,Фразы))> 0 Тогда
Срабатывает исключение : Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
58 semen20192019
 
26.02.19
14:12
(56) Объясни пожалуйста не знающему человеку.
59 Mikeware
 
26.02.19
14:21
(52) ну ведь подсказали еще в (2)?
хочешь, чтоб за тебя написали? ну, напишут - но разве оно тебе поможет?
все за тебя все равно не сделают. учись делать самостоятельно.
(58) посмотри в СП что возвращает СтрНайти, и подумай - можно ли это перевести в нижний регистр
60 sqr4
 
26.02.19
14:27
У меня же все наоборот было Сначала СтрНайти, а уж потом нРег...
61 Mikeware
 
26.02.19
14:30
(60) ну ты ж про некоммутативность ничего не говорил :-)
62 semen20192019
 
26.02.19
14:32
(59)Про СтрНайти понял)))Извиняюсь.
63 Xapac
 
модератор
26.02.19
14:34
64 sqr4
 
26.02.19
14:34
(63) (42) Было уже, советвали
65 semen20192019
 
26.02.19
14:39
(60) переписал)
Если СтрНайти(Нрег(СтрокаТаблицы.НазначениеПлатежа),Фразы)> 0 Тогда
66 ИУБиПовиц
 
26.02.19
14:40
Фразы = Запрос.Выполнить().Выбрать();
Платеж = СтрНайти(Фразы,СтрокаТаблицы.НазначениеПлатежа);
Ну гляньте что у вас в фразах за значение -  выборка ж, а должна быть строка.
67 Йохохо
 
26.02.19
14:41
(66) тонко, зачот
68 ИУБиПовиц
 
26.02.19
14:42
и как должно обрабатываться пересечение ключевых слов, типа в назначении несколько ключевых будет находится?
69 hhhh
 
26.02.19
14:44
(68) я думаю Назначение платежа по-любому не найдется во фразе. Надо наоборот, фразу искать в назначении платежа.
70 Вася Теркин
 
26.02.19
14:44
Тогда уж так
ЭтоРусскийЯзык = СтрНайти(Фразы,СтрокаТаблицы.НазначениеПлатежа);
71 semen20192019
 
26.02.19
14:44
(66) У меня в выборке находятся записи с типом строка.
72 Йохохо
 
26.02.19
14:45
(69) ну блин
73 semen20192019
 
26.02.19
14:47
(66)
Из отладчика
КлючевыеФразы    "Продовольственное"    Строка
74 Вася Теркин
 
26.02.19
14:47
(69) Точно
ЭтоРусскийЯзык = СтрНайти(СтрокаТаблицы.НазначениеПлатежа,Фразы.КлючевыеФразы);
75 Вася Теркин
 
26.02.19
14:48
А нашлась запись зачем? Там вроде надо знать какие при этом ставить....
76 Вася Теркин
 
26.02.19
14:49
Сиськи покажи.
77 semen20192019
 
26.02.19
14:49
(75) Не совсем понял про что речь.
78 semen20192019
 
26.02.19
15:06
(74) Спасибо
79 semen20192019
 
26.02.19
15:17
Всем спасибо большое. Тему можно закрыть.
80 Mikeware
 
26.02.19
15:19
(68) можно тупо - сортировать по длине ключевой фразы. сначала обрабатыват самые длинные фразы.
ну и затем - прерываться...
в условии задачи вроде нет и вряд ли может быть условие множественности...
81 Вася Теркин
 
27.02.19
06:50
(80) Там ещё примерный поиск нужен. Вообще я бы для начала пробелы поубрал, запятые и кавычки всякие. И все в верхний регистр.
Функция ВернутьНормализованнуюСтроку(Строчка)
Строчка = СтрЗаменить(Строчка," ","");
Строчка = СтрЗаменить(Строчка,"(","");
Строчка = СтрЗаменить(Строчка,")","");
Строчка = СтрЗаменить(Строчка,"-","");
Строчка = СтрЗаменить(Строчка,"_","");
Строчка = СтрЗаменить(Строчка,"№","");
Строчка = СтрЗаменить(Строчка,"#","");
Строчка = СтрЗаменить(Строчка,"%","");
Строчка = СтрЗаменить(Строчка,"!","");
Строчка = СтрЗаменить(Строчка,"?","");
//Даты повырежем все и прочие числа
Строчка = СтрЗаменить(Строчка,".","");
Строчка = СтрЗаменить(Строчка,",","");
Строчка = СтрЗаменить(Строчка,"г.","");
Строчка = СтрЗаменить(Строчка,"0","");
Строчка = СтрЗаменить(Строчка,"1","");
Строчка = СтрЗаменить(Строчка,"2","");
Строчка = СтрЗаменить(Строчка,"3","");
Строчка = СтрЗаменить(Строчка,"4","");
Строчка = СтрЗаменить(Строчка,"5","");
Строчка = СтрЗаменить(Строчка,"6","");
Строчка = СтрЗаменить(Строчка,"7","");
Строчка = СтрЗаменить(Строчка,"8","");
Строчка = СтрЗаменить(Строчка,"9","");
Строчка = СтрЗаменить(Строчка,"0","");
Строчка = СтрЗаменить(Строчка," от ","");
Возврат Строчка;
Конец
82 Вася Теркин
 
27.02.19
06:50
Забыл в конце ВРЕГ

Функция ВернутьНормализованнуюСтроку(Строчка)
Строчка = СтрЗаменить(Строчка," ","");
Строчка = СтрЗаменить(Строчка,"(","");
Строчка = СтрЗаменить(Строчка,")","");
Строчка = СтрЗаменить(Строчка,"-","");
Строчка = СтрЗаменить(Строчка,"_","");
Строчка = СтрЗаменить(Строчка,"№","");
Строчка = СтрЗаменить(Строчка,"#","");
Строчка = СтрЗаменить(Строчка,"%","");
Строчка = СтрЗаменить(Строчка,"!","");
Строчка = СтрЗаменить(Строчка,"?","");
//Даты повырежем все и прочие числа
Строчка = СтрЗаменить(Строчка,".","");
Строчка = СтрЗаменить(Строчка,",","");
Строчка = СтрЗаменить(Строчка,"г.","");
Строчка = СтрЗаменить(Строчка,"0","");
Строчка = СтрЗаменить(Строчка,"1","");
Строчка = СтрЗаменить(Строчка,"2","");
Строчка = СтрЗаменить(Строчка,"3","");
Строчка = СтрЗаменить(Строчка,"4","");
Строчка = СтрЗаменить(Строчка,"5","");
Строчка = СтрЗаменить(Строчка,"6","");
Строчка = СтрЗаменить(Строчка,"7","");
Строчка = СтрЗаменить(Строчка,"8","");
Строчка = СтрЗаменить(Строчка,"9","");
Строчка = СтрЗаменить(Строчка,"0","");
Строчка = ВРЕГ(Строчка);
Возврат Строчка;
Конец
83 Вася Теркин
 
27.02.19
06:52
Можно ещё добавить
Строчка = СтрЗаменить(Строчка," от ","");
самой первой строкой
84 Nikoss
 
27.02.19
07:05
(81)(82) ох и любитель копипаста :/
85 Mihenius
 
27.02.19
08:19
(82) Забыл убрать кавычки и прочие доп. символы, а так же перенос строки и ";"
86 Mikeware
 
27.02.19
08:22
(82) открой для себя сред() и циклы...
87 breezee
 
27.02.19
09:06
Используй ПОДОБНО в запросе
Основная теорема систематики: Новые системы плодят новые проблемы.